Pythonのクラス変数(属性)とインスタンス変数(属性

DAY 4.クラス変数(属性)とインスタンス変数(属性)

  • クラス変数:すべてのクラスのインスタンス間は、部屋内のすべてのオブジェクトのコピーを1つだけ保持する、クラス変数を変数を共有することができます
    • クラス本体に定義されています
    • オブジェクトクラスのすべてのインスタンスがクラス変数にアクセスすることができます
    • クラス変数は、クラス、インスタンスオブジェクトによってのみ読み取りアクセスを変更することができます
    • 使用すると、对象名.类变量名 = new valueオブジェクトクラス属性を変更するのではなく、新しいプロパティオブジェクトを追加するために使用されていません
class Demo:
    # 类变量
    classVar = 0
    def __init__(self):
        self.instanceVar = 1

if __name__ == '__main__':
    demo1 = Demo()
    demo2 = Demo()
    # 类的所有实例对象都可以访问类变量
    print(demo1.classVar)  # 0
    print(demo2.classVar)  # 0
    # 由类修改类变量
    Demo.classVar = 2
    print(demo1.classVar)  # 2
    print(demo2.classVar)  # 2
    # 注意,这样不是在修改类变量,而是给实例对象添加了一个属性
    demo1.classVar = 2
    print(demo1.classVar)  # 2
  • インスタンス変数:オブジェクトをインスタンス化するとき、各インスタンス変数の間には影響を与えない、独自のインスタンス変数を持っています
    • コンストラクタで定義されています
    • オブジェクトインスタンスの変更インスタンス変数、クラスのインスタンス変数は、の意味を変更しませんでした
    • オブジェクトの各インスタンスは、インスタンス変数を持っています
class Demo:
    # 类变量
    classVar = 0
    def __init__(self):
        # 实例变量
        self.instanceVar = 1

if __name__ == '__main__':
    print(demo1.instanceVar)  # 1
    print(demo2.instanceVar)  # 1
    # 各实例对象间的实例变量互相不影响
    demo1.instanceVar = 2
    print(demo1.instanceVar)  # 2
    print(demo2.instanceVar)  # 1
    # 用类修改实例变量没意义
    Demo.instanceVar = 2
    print(demo1.instanceVar)  # 2
    print(demo2.instanceVar)  # 1

4.1概要

変数(属性) 定義 読みます 修正 メモリ
クラス変数 クラス本体に定義されています className.classVarobjectName.classVar className.classVar = new value ただ、コピーを保持
インスタンス変数 コンストラクタで定義されています objectName.instanceVar objectName.instanceVar = new value オブジェクトの各インスタンスは、互いに独立してオブジェクト間、保持しています

**注:**使用すると、objectName.classVar = new value新しいプロパティを追加する場合があり

参考記事:

pythonについてGitHubの顔の質問

パイソン(クラス変数とクラス属性のクラスとオブジェクト)

クラス - - 原発の基礎オブジェクト指向:パートVは、Python []を示しています

公開された62元の記事 ウォン称賛33 ビュー10000 +

おすすめ

転載: blog.csdn.net/zjbyough/article/details/95934888