Pythonクラスの属性

インスタンスオブジェクトにバインドされたプロパティはこのインスタンスにのみ属し、1つのインスタンスにバインドされたプロパティは他のインスタンスに影響しません。同様に、クラスもプロパティをバインドできますが、クラスのプロパティはどのオブジェクトにも属していませんが、このクラス。プロパティをクラスにバインドすると、すべてのインスタンスがクラスのプロパティにアクセスでき、すべてのインスタンスが同じクラスプロパティにアクセスできます。つまり、インスタンス属性の各インスタンスには独自の独立したインスタンスがありますが、クラス属性にはコピーが1つしかありません。
クラス属性へのアクセスクラス
を介したクラス属性へのアクセス。インスタンスの名前がクラスと同じでない場合でも、インスタンスオブジェクトを介してクラス属性にアクセスできます。

# Enter a code
## the first time to create a class 'Person'

class Person(object):
    count = 0
    def __init__(self, name, sex, age):
        self.name = name
        self.sex = sex
        self.age = age
        Person.count += 1
xiaoming = Person('xiaoming', 'M', 18)

xin = Person('xin', 'F', 18)

print(xiaoming.name, xiaoming.sex, xiaoming.age)
print(xin.name, xin.sex, xin.age)
print("the number of objects is %i" %(Person.count))

クラス属性とインスタンス属性の名前が同じ場合、インスタンス属性がクラス属性よりも優先されます。

インスタンスを介してクラスのプロパティを変更することはできません。実際、インスタンスメソッドを介してクラスプロパティを変更すると、対応するインスタンスプロパティのみがインスタンスにバインドされます。

おすすめ

転載: blog.csdn.net/angelsweet/article/details/114536151