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