0
試圖瞭解Python的靜態變量了,下面讓我困惑:Python的靜態變量再分配
>>> class Foo():
... a = [1]
...
>>> f = Foo()
>>> Foo.a.append(2)
>>> Foo.a
[1, 2]
>>> f.a
[1, 2]
>>> f.a.append(3)
>>> f.a
[1, 2, 3]
>>> Foo.a
[1, 2, 3]
>>> # appears that Foo.a and f.a reference same list object
...
>>> Foo.a = 3
>>> f.a
3
>>> Foo.a
3
基於上面這個問題的答案(Static class variables in Python),我預計Foo.a和發是分開的名字,但這個fa只是初始化爲Foo.a.如果您首先嚐試通過Foo.a修改對象或重新分配f.a,則此解釋可行,但最後幾行我感到困惑。我希望Foo.a = 3只重新分配Foo.a,但它似乎也重新分配了f.a,因爲它不再引用列表對象。如果你首先分配給f.a,Foo.a的重新分配不會改變f.a,所以看起來f.a是Foo.a的合成糖,直到f.a被明確分配爲止。它是否正確?