pythonクラス属性静的メソッド

2401 ワード


≪インスタンス|Instance|emdw≫
インスタンスは、オブジェクトによって作成された実在的な存在です.
作成されたオブジェクトをクラスのインスタンスと呼びます
オブジェクトを作成するアクションをインスタンス化と呼びます
オブジェクトのプロパティをインスタンスのプロパティと呼びます
オブジェクト呼び出しのメソッドをインスタンスメソッドと呼びます
 
クラスは特殊なオブジェクトです
 
クラス属性
クラス属性はクラスオブジェクトで定義された属性であり、通常はこのクラスに関連する特徴を記録するために使用され、オブジェクトに関連する特徴は記録されません.
トレーニング要件:
1.ツールクラスを定義する
2.各ツールには独自の名前がついています
3.このクラスを使用して、どのくらいのツールオブジェクトを作成したかを知る
class Tool ( object ):
#            
count = 0
 
def __init__(self, name):
self.name = name
#        +1
Tool.count += 1 #         :  .    
#       
t1 = Tool ( "  " )
t2 = Tool ( "  " )
#          
print ( "        %d" % Tool.count )

 
属性取得メカニズム--上への検索メカニズム
1、まずオブジェクトの内部を検索する
2、見つからないと上にクラス属性を探す
 
クラスメソッド
クラス属性は、クラスオブジェクトに対して定義された属性です.
割り当て文を使用してclassキーの下で属性を定義します.
クラス属性は、このクラスに関連するフィーチャーを記録するために使用されます.
 
クラスメソッドは、クラスオブジェクトに対して定義されたメソッドです.
クラスメソッド内でクラスプロパティに直接アクセスしたり、他のクラスメソッドを呼び出したりすることができます.
 
構文の形式:
@classmethod
def     ( cls ):
pass

注意:
1.クラスメソッドは修飾器@classmethodで識別し、解釈器にクラスメソッドであることを伝える必要がある
2.クラスメソッドの最初のパラメータはclsであるべきで、インスタンスメソッドの最初のパラメータselfと類似している.
3.クラス名でクラスメソッドを呼び出し、メソッドを呼び出すときにclsパラメータを渡す必要はありません
4.メソッドの内部:
  • はclsを通過することができる.アクセスクラスのプロパティ
  • はclsを通過することもできる.他のクラスメソッド
  • を呼び出す
    class Tool(object):
    count = 0
     
    def __init__(self, name):
    self.name = name
    Tool.count += 1
     
    #    
    @classmethod
    def show_tool_count(cls):
    #             cls.
    print("        %d" % cls.count)
     
    tool1 = Tool("  ")
    tool2 = Tool("  ")
    #      ,    .    ()
    Tool.show_tool_count()

     
    スタティツクメソッド
    静的メソッドは@staticmethodで識別し、解釈器に静的メソッドであることを伝える必要があります.
    パラメータは任意で、selfパラメータとclsパラメータはありませんが、メソッドボディではクラスまたはインスタンスのプロパティとメソッドは使用できません.
    静的メソッドは主に論理的なコードを格納するために使用される
    クラス名を通す静的メソッドの呼び出し
    構文の形式:
    @staticmethod
    def      ():
    pass
     
    

      
    練習:
    class Dog(object):
    @staticmethod
    def run():
    #                   ,           
    print("    。。。")
    #     .      ,       
    Dog.run()