Pythonのクラス属性、静的メソッドとクラスメソッド

1.クラスのプロパティ

  • 1.1定義

    • 外部クラスのメソッド属性名 = 属性值定義された属性
    • アクセス:
      • 类名.属性名
      • 对象名.属性名
        クラスの学生:
            cls_id = 102 
            
        STU =学生()
        プリント(Student.cls_id)
        プリント(stu.cls_id)
        
        プリント( "---------")
        
        Student.cls_id = 103 
        プリント(Student.cls_id)
        プリント( stu.cls_id)
        
        プリント( "---------")
        
        stu.cls_id = 104 
        プリント(Student.cls_id)
        プリント(stu.cls_id)
        

        結果:

        102 
        102 
        --------- 
        103 
        103 
        --------- 
        103 
        104
  • 1.2オブジェクトとクラス属性の性質の違い

    • (1)メモリ内の異なる数
      • オブジェクトプロパティ:作成されたオブジェクトの数は、メモリに何があります
      • クラスは1つだけであるメモリ内にのみ存在しますが、オブジェクトを読み取ることができます:class属性
    • (2)異なる位置を定義します
      • オブジェクトの属性:メソッドで定義されたクラスを
      • クラス属性:外内で定義されたクラスのメソッド
    • 異なる(3)アクセス方法
      • オブジェクトのプロパティ:对象名.属性名
      • クラスのプロパティ:类名.属性名
        • で、クラス属性を読みます对象名.属性名
    • (4)異なるライフサイクル
      • オブジェクトプロパティ:オブジェクトの作成 - システムによって回収>オブジェクト
      • クラスのプロパティ:グローバル名前空間にロード - >エンドプログラムを
    • (5)別の所有者
      • オブジェクトプロパティ:属するオブジェクト
      • クラス属性:クラスに属し

2.静的メソッド

  • クラスメソッド:コンセプト
  • フォーマット:上記を添加する方法で@staticmethod
  • パラメータ:あなたはパラメータを持つことができ、パラメータなし
  • およびコードは、一般に、オブジェクトのクラス、オブジェクト・インスタンスに関係なく使用されている:アプリケーションシナリオ
  • 使用します。
    • (1)类名.类方法名
    • (2)对象名.类方法名
  • 使用例のシナリオ:
    • 以下のような:学生管理システムを表示するには、メインメニュー

3.クラスのメソッド

  • コンセプト:何のメソッドがクラスのインスタンスで直接呼び出すことができません
  • フォーマット:上記を添加する方法で@classmethod
  • パラメータ:最初の引数はクラス自体を受信する必要があります
    • CLSのためのパラメトリックな方法は、他の名前することができますが、一般的にデフォルトはCLSです
    • CLSクラスオブジェクトポイント(すなわち、実施例グッズ以下)
  • シナリオ:静的メソッドのみが関与するプロセスは、(属性ベースの方法は、クラスを変更するために使用された)クラス属性を使用することができます
  • 使用します。
    • (1)对象名.类方法名
    • (2)类名.类方法名
  • 使用例のシナリオ:
    • すべての商品に割引を変更
      クラス製品():
          割引= 1 
          デフ__init __(自己、価格、名):
              self.name =名前
              self.price =価格
          デフprice_discount(自己):
              戻りself.price * Goods.discount 
          @classmethod 
          デフchange_discount(CLS、new_discount ):
              cls.discount = new_discount 
          
          商品=商品(20、 "アウディ")
          プリント(goods.price_discount())
          Goods.change_discount(0.5)
          プリント(goods.price_discount())
      
      結果:
      20 
      10.0
      

        

       

おすすめ

転載: www.cnblogs.com/songdanlee/p/11367584.html