我是python的新手,瞭解到類屬性就像C++中的靜態數據成員。然而,在嘗試下面的代碼後我感到困惑:python:class屬性和實例屬性
>>> class Foo:
... a=1
...
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
1
>>> f1.a=5
>>> f1.a
5
>>> f2.a
1
不應該f2.a也等於5嗎?
如果被定義爲一個列表,而不是一個整數,該行爲是正常的:
>>> class Foo:
... a=[]
...
>>> f1=Foo();
>>> f2=Foo()
>>> f1.a
[]
>>> f1.a.append(5)
>>> f1.a
[5]
>>> f2.a
[5]
我看着 Python: Difference between class and instance attributes,但它並沒有回答我的問題。
任何人都可以解釋爲什麼區別?由於
可能的重複[如何避免讓Python類數據在實例間共享?](http:// stackoverflow。com/questions/1680528/how-do-i-avoid-having-python-class-data-shared-among-instances) –