簡體   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