繁体   English   中英

类和数据属性之间有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM