[英]What is the difference between class and data attributes?
引用diveintopython,
“您已经知道数据属性,它们是类的特定实例所拥有的变量。Python还支持类属性,它们是由类本身拥有的变量。”
从什么意义上讲,一个类拥有类属性? 如果您在特定实例中更改类属性的值,则该更改仅反映在该实例中(而不在类的其他实例中)。
从我的角度来看,这使类属性与数据(即实例)属性基本相同(尽管在语法上有所不同)。
在C ++中,更改“类变量”的值,并且该更改将反映在所有实例中。
两者有什么区别?
我认为该示例将向您解释其含义。
class A(object):
bar = 1
a = A()
b = A()
b.bar = 2
print a.bar # outputs 1
A.bar = 3
print a.bar # outputs 3
print b.bar # outputs 2
在这种情况下, b.bar
将在b.bar = 2
之后由实例拥有,但a.bar
仍将由类拥有。 这就是为什么在类上对其进行更改后它将在实例上进行更改,而b.bar
将不会进行更改的原因。
这个问题是一个重复这一个 :
>>> class B(object):
... foo = 1
...
>>> b = B()
>>> b.__dict__
{}
>>> b.foo = 2
>>> b.__dict__
{'foo': 2}
当给b
赋值时,添加了一个实例变量。 您没有修改class属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.