Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonのクラスメソッドと静的メソッド


Pythonのクラスメソッドはメソッドであり、クラスにバインドされていますが、そのクラスのオブジェクトにはバインドされていません。静的メソッドも同じですが、いくつかの基本的な違いがあります。クラスメソッドの場合は@classmethodデコレータを指定する必要があり、静的メソッドの場合は@staticmethodデコレータが使用されます。

クラスメソッドの構文。

class my_class:
   @classmethod
  deffunction_name(cls, arguments):
      #Function Body
      return value

静的メソッドの構文。

class my_class:
   @staticmethod
   deffunction_name(arguments):
      #Function Body
      return value

ClassmethodとStaticMehtodの違いは何ですか?

クラスメソッド 静的メソッド
classメソッドは、最初の引数としてcls(クラス)を取ります。 静的メソッドは特定のパラメーターを取りません。
クラスメソッドはクラスの状態にアクセスして変更できます。 静的メソッドはクラスの状態にアクセスまたは変更できません。
classメソッドは、クラスをパラメーターとして受け取り、そのクラスの状態を認識します。 静的メソッドはクラスの状態を認識しません。これらのメソッドは、いくつかのパラメーターを取得することにより、いくつかのユーティリティタスクを実行するために使用されます。
@classmethodデコレータがここで使用されます。 @staticmethodデコレータがここで使用されます。

静的メソッドはいくつかのユーティリティタスクを実行するために使用され、クラスメソッドはファクトリメソッドに使用されます。ファクトリメソッドは、さまざまなユースケースのクラスオブジェクトを返すことができます。

サンプルコード

from datetime import date as dt
class Employee:
   def __init__(self, name, age):
      self.name = name
      self.age = age
   @staticmethod
   defisAdult(age):
      if age > 18:
         return True
      else:
         return False
   @classmethod
   defemp_from_year(emp_class, name, year):
      return emp_class(name, dt.today().year - year)
   def __str__(self):
      return 'Employee Name: {} and Age: {}'.format(self.name, self.age)
e1 = Employee('Dhiman', 25)
print(e1)
e2 = Employee.emp_from_year('Subhas', 1987)
print(e2)
print(Employee.isAdult(25))
print(Employee.isAdult(16))

出力

Employee Name: Dhiman and Age: 25
Employee Name: Subhas and Age: 31
True
False

  1. PythonTkinterのメソッドの後

    TkinterはGUIを作成するためのPythonライブラリです。 GUIウィンドウやその他のウィジェットを作成および操作してデータやGUIイベントを表示するための多くの組み込みメソッドがあります。この記事では、afterメソッドがTkinterGUIでどのように使用されるかを見ていきます。 構文 .after(delay, FuncName=FuncName) This method calls the function FuncName after the given delay in milisecond ウィジェットの表示 ここでは、単語のリストをランダムに表示するフレームを作成しま

  2. Pythonでの継承

    この記事では、Python3.xでの継承と拡張クラスについて学習します。またはそれ以前。 継承は実際の関係をうまく表し、再利用性を提供し、推移性をサポートします。開発時間が短縮され、メンテナンスが容易になり、拡張も容易になります。 継承は大きく5つのタイプに分類されます- シングル 複数 階層的 マルチレベル ハイブリッド 上の図に示されているように、継承とは、実際に親クラスのオブジェクトを作成せずに、他のクラスの機能にアクセスしようとするプロセスです。 ここでは、単一の階層型継承の実装について学習します。 単一継承 例 # parent class class Studen