ホームページ >バックエンド開発 >Python チュートリアル >Python の静的メソッドはインスタンス メソッドとどのように異なり、どのように呼び出されますか?
クラス インスタンスから静的メソッドを直接呼び出す
Python では、静的メソッドはクラス メソッドにアクセスするための代替アプローチを提供します。これらは、インスタンス化を必要とせず、クラス自体を通じて直接アクセスできるという点で、インスタンス メソッドとは動作が異なります。
静的メソッドの作成
静的メソッドを定義するには、 @staticmethod デコレータが使用されます。このデコレータはメソッド シグネチャから self 引数を削除し、それが静的メソッドであることを示します。次のコード例はこれを示しています。
class MyClass(object): @staticmethod def the_static_method(x): print(x)
静的メソッドの呼び出し
インスタンス メソッドとは異なり、静的メソッドはクラス インスタンスまたはクラスで直接呼び出すことができます。自体。次のコード スニペットは、この動作を示しています。
MyClass.the_static_method(2) # outputs 2 MyClass().the_static_method(2) # also outputs 2
従来の静的メソッド定義との比較
古いバージョンの Python (2.2 および 2.3) では、定義に異なるアプローチが採用されていました。静的メソッド。デコレータの代わりに関数として staticmethod を使用します。ただし、これは古代の Python 実装との互換性を維持するためにのみ必要です。
class MyClass(object): def the_static_method(x): print(x) the_static_method = staticmethod(the_static_method)
静的メソッドの使用を控える
静的メソッドを使用する必要があることに注意することが重要です。控えめに。ほとんどの場合、個別のトップレベル関数により、より明確な解決策が提供されます。
公式ドキュメント
Python ドキュメントでは、静的メソッドについて次のように説明されています。
静的メソッドは暗黙的な最初の引数を受け取りません。静的メソッドを宣言するには、次のイディオムを使用します:
class C: @staticmethod def f(arg1, arg2, ...): ...@staticmethod 形式は関数 デコレータ です。関数の定義 の関数定義の説明を参照してください。
クラス (C.f() など) またはインスタンス (C.f() など) で呼び出すことができます。 C().f()) として。インスタンスは、そのクラスを除いて無視されます。
Python の静的メソッドは、Java または C で見られるものと似ています。より高度な概念については、classmethod() を参照してください。
静的メソッドの詳細については、_標準型の階層_の標準型階層に関するドキュメントを参照してください。
以上がPython の静的メソッドはインスタンス メソッドとどのように異なり、どのように呼び出されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。