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
-
PythonTkinterのメソッドの後
TkinterはGUIを作成するためのPythonライブラリです。 GUIウィンドウやその他のウィジェットを作成および操作してデータやGUIイベントを表示するための多くの組み込みメソッドがあります。この記事では、afterメソッドがTkinterGUIでどのように使用されるかを見ていきます。 構文 .after(delay, FuncName=FuncName) This method calls the function FuncName after the given delay in milisecond ウィジェットの表示 ここでは、単語のリストをランダムに表示するフレームを作成しま
-
Pythonでの継承
この記事では、Python3.xでの継承と拡張クラスについて学習します。またはそれ以前。 継承は実際の関係をうまく表し、再利用性を提供し、推移性をサポートします。開発時間が短縮され、メンテナンスが容易になり、拡張も容易になります。 継承は大きく5つのタイプに分類されます- シングル 複数 階層的 マルチレベル ハイブリッド 上の図に示されているように、継承とは、実際に親クラスのオブジェクトを作成せずに、他のクラスの機能にアクセスしようとするプロセスです。 ここでは、単一の階層型継承の実装について学習します。 単一継承 例 # parent class class Studen