Python では、クラス メソッドはバインド、アンバインド、静的の 3 つのタイプに分類できます。これらの型の違いを理解することは、効果的なクラス設計とオブジェクトの相互作用にとって重要です。
バインドされたメソッドは、クラスの特定のインスタンスに関連付けられます。呼び出されると、最初の引数は呼び出し側のインスタンスに自動的にバインドされます。これにより、メソッドの実行内でインスタンス固有の属性とメソッドにアクセスできるようになります。提供されている例では、method_one はバインドされたメソッドです:
class Test(object): def method_one(self): print("Called method_one")
インスタンス経由で呼び出された場合、バインドされたメソッドは期待どおりに動作します:
a_test = Test() a_test.method_one() # Output: Called method_one
Unboundメソッドは、クラスの特定のインスタンスに関連付けられていません。呼び出されたとき、最初の引数は自動的にインスタンスにバインドされず、インスタンス固有のデータにアクセスできません。この例では、method_two は非バインド メソッドです:
class Test(object): def method_two(): print("Called method_two")
インスタンスが提供されていないため、インスタンス経由で非バインド メソッドを呼び出そうとすると、TypeError が発生します:
a_test = Test() a_test.method_two() # Error: TypeError: method_two() takes no arguments (1 given)
静的メソッドはインスタンスやクラスに関連付けられておらず、通常の関数のように動作します。これらには、クラスから、またはインスタンスを使用して直接アクセスできますが、インスタンス固有のデータへの固有のアクセスはありません。静的メソッドは通常、ユーティリティ関数またはクラスレベルの操作に使用されます:
class Test(object): @staticmethod def method_two(): print("Called method_two")
静的メソッドはインスタンスとクラス自体の両方で呼び出すことができます:
a_test = Test() a_test.method_two() # Output: Called method_two Test.method_two() # Output: Called method_two
以上がPython のバインドされたクラス メソッド、アンバインドされたクラス メソッド、および静的なクラス メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。