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

Linda Hamilton
リリース: 2024-11-13 00:24:02
オリジナル
303 人が閲覧しました

What are the differences between unbound, bound, and static methods in Python classes?

Python のクラス メソッドの違い: 非バインド、バインド、および静的

Python では、クラス メソッドは 3 つのタイプに分類できます。バインドされており、静的です。それらの違いを理解することは、効果的なオブジェクト指向プログラミングにとって重要です。

バインドされたメソッド

バインドされたメソッドは、呼び出し時に最初の引数としてクラスのインスタンスを必要とするメソッドです。たとえば、次のコードの method_one メソッドはバインドされたメソッドです。

class Test(object):
  def method_one(self):
    print "Called method_one"
ログイン後にコピー

バインドされたメソッドを呼び出すには、クラスのインスタンスを指定する必要があります。例:

a_test = Test()
a_test.method_one()
ログイン後にコピー

非バインド メソッド

非バインド メソッドは、本質的に、クラスのインスタンスにバインドされていないクラス メソッドです。 Python では、すべてのクラス メソッドは最初はバインドされていません。たとえば、以下のコード スニペットの method_two メソッドは非バインド メソッドです。

class Test(object):
  def method_two():
    print "Called method_two"
ログイン後にコピー

非バインド メソッドは、クラスのインスタンスで直接呼び出すことはできません。代わりに、呼び出す前にインスタンスにバインドする必要があります。これは、以下に示すように、クラス名を最初の引数として使用することで実現できます。

Test.method_two()
ログイン後にコピー

静的メソッド

静的メソッドは、バインドされていないメソッドです。クラスのインスタンスであり、最初の引数としてインスタンスを必要としません。これらは @staticmethod デコレーターを使用して宣言されます。例:

class Test(object):
    @staticmethod
    def method_three():
        print "Called method_three"
ログイン後にコピー

静的メソッドは、クラス上またはクラスのインスタンス上で直接呼び出すことができます。例:

Test.method_three()
a_test = Test()
a_test.method_three()
ログイン後にコピー

概要

要約すると、Python のクラス メソッド間の主な違いは、バインディング ステータスにあります。バインドされたメソッドは最初の引数としてインスタンスを必要とし、アンバインド メソッドは呼び出される前にインスタンスにバインドする必要があります。また、静的メソッドはインスタンスにバインドされず、引数としてインスタンスを必要としません。

以上がPython クラスの非バインド メソッド、バインド メソッド、および静的メソッドの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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