静的メソッドのpython3と自己CLSクラスとメソッドの違いの違い

 


一般的には、クラスを使用するには、オブジェクトをインスタンス化してからメソッドを呼び出す必要があります。

または@staticmethod @classmethodを使用し、あなたがインスタンス化する必要がない場合も、クラス名を指示します。メソッド名()が呼び出されます。

これは、組織コードを容易にし、関数がそのクラスに行くために、特定のクラスに属し、かつクリーンな名前空間を助けるべきです

クラスA() = ' 1 ' 

        @staticmethod 
        DEF foo1の(名前):
                 印刷" こんにちは、%S "(名))
         DEF foo2は(自己、名):
                 印刷" こんにちは、%S "(名前))

        @classmethod 
        DEF foo3(CLS、名):
                 印刷" こんにちは、%S "(名))


、A = A()
a.foo1(' mamq ' 
a.foo1(' mamq ' 印刷" --------------------- " * 20 
a.foo2(' mamq ' #1 A.foo2( 'mamq')

A .foo3(' foo3 ' 
A.foo3(' foo3 '

静的関数FOO1、装飾的なデコレータを@staticmethodまず、クラスAの定義は、クラスAは、3つの機能を持って、このメソッドは、クラスと何らかの関係を持っていますが、クラスやインスタンスに参加する必要はありません。次の二つの方法は、クラスのインスタンスを使用する方法であってもよいような方法は、クラスとして使用することができると言うことであり、通常出力とすることができます。

  1.  
    = A()
  2.  
    a.foo1( 'mamq') 出力:こんにちはmamq
  3.  
    A.foo1( 'mamq') 出力:こんにちはmamq

正常な機能foo2は、唯一のコールを介して、クラスのインスタンスの関数です。

  1.  
    a.foo2( 'mamq') 出力:こんにちはmamq
  2.  
    A.foo2( 「mamq」) エラー:この一般的なクラスのメソッドを呼び出すことはできません 

foo3クラス関数、クラス自体を表すために、最初のパラメータとしてCLSクラスで使用されるメソッド、クラスメソッドと実施例クラス自体のメソッドにのみ無関係です。次の2つの方法が正常に出力することができます。

  1.  
    a.foo3( 'mamq') 出力:こんにちはmamq
  2.  
    A.foo3( 'mamq') 出力:こんにちはmamq

 

 

いくつかの試験は、個体が、現在のハードウェア復号化効果を防止するためにのみクラスメソッドを発見した後、他のケースでは、クラスメソッドは、静的メソッドで置き換えることができます

 

 

おすすめ

転載: www.cnblogs.com/ZFBG/p/11459551.html