我對下面的Python行爲感到莫名其妙。爲什麼第二個和第三個實例(b
,c
,i
)的屬性是類屬性i
但a
的行爲有所不同?爲什麼更改實例變量也會改變靜態變量?
In [47]: class Foo:
...: i=0
...:
In [48]: a = Foo()
In [49]: a.i = 1
In [50]: a.i
Out[50]: 1
In [51]: Foo.i
Out[51]: 0
In [52]: b = Foo()
In [53]: b.i
Out[53]: 0
In [54]: Foo.i is b.i
Out[54]: True
In [55]: Foo.i is a.i
Out[55]: False
In [56]: c = Foo()
In [57]: Foo.i is c.i
Out[57]: True
慎用解釋的'int值int'的結果... Python的緩存小整數。雖然在這種情況下,我認爲這不會影響你的演示,但也許最好使用一個虛擬類來進行演示。 –