中国語の説明:
classmethodは、このパラメータを指定せずにクラスメソッドを指定するために使用されます。使用方法は次のとおりです。
class C: @classmethod def f(cls, arg1, arg2, ...): ...
クラスメソッド 直接クラス呼び出し (C.f()) またはインスタンス呼び出し (C().f()) を行うことができます。
バージョン: python2.2 で新機能、python2.4 で新機能が追加されました。 Python3 でも引き続き利用できます。
英語の説明:
関数のクラスメソッドを返します。
インスタンスメソッドがインスタンスを受け取るのと同じように、クラスメソッドは暗黙の最初の引数としてクラスを受け取ります。クラスメソッドを宣言するには、次のイディオムを使用します:
class C: @classmethod def f(cls, arg1, arg2, ...): ...。
@classmethod フォームは関数デコレータです。詳細については、「関数の定義」の関数定義の説明を参照してください。
クラス (C.f() など) またはインスタンス (C() など) で呼び出すことができます。 f())。クラス以外のインスタンスは無視されます。クラス メソッドが派生クラスに対して呼び出される場合、派生クラス オブジェクトは暗黙の最初の引数として渡されます。
クラス メソッドは、C++ や Java の静的メソッドとは異なります。これらが必要な場合は、このセクションの staticmethod() を参照してください。
クラス メソッドの詳細については、「標準型の階層」の標準型階層に関するドキュメントを参照してください。
バージョン 2.2 の新機能。
バージョンの変更2.4: 関数デコレータ構文を追加しました。
コード例:
>>> class C: ... @classmethod ... def f(self): ... print "This is a class method" ... >>> C.f() This is a class method >>> c = C() >>> c.f() This is a class method >>> class D: ... def f(self): ... print " This is not a class method " ... >>> D.f() Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unbound method f() must be called with D instance as first argument (got nothing instead) >>> d = D() >>> d.f() This is not a class method
以上がPython関数クラスメソッド()の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。