Python のバインドされたクラス メソッド、アンバインドされたクラス メソッド、および静的なクラス メソッドの違いは何ですか?

DDD
リリース: 2024-11-12 10:16:02
オリジナル
628 人が閲覧しました

What are the Differences Between Bound, Unbound, and Static Class Methods in Python?

Python のクラス メソッドの違い: バインド、アンバインド、静的

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 Methods

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート