Python関数クラスメソッド()

巴扎黑
巴扎黑オリジナル
2017-08-21 13:43:032245ブラウズ

classmethod(関数)

中国語の説明:

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。