我有一個Python類,有一個類屬性設置爲None
以外的東西。創建新實例時,對該屬性所做的更改會在所有實例中保留。具有非無類屬性的類的新實例?
下面是一些代碼來理解這一點:
class Foo(object):
a = []
b = 2
foo = Foo()
foo.a.append('item')
foo.b = 5
使用foo.a
回報['item']
和foo.b
回報5
,正如人們所期望的那樣。
當我創建一個新的實例(我們稱它爲bar
),使用bar.a
回報['item']
和bar.b
回報5
,太!然而,當我最初設定所有的類屬性None
然後將它們設置爲任何在__init__
,像這樣:
class Foo(object):
a = None
b = None
def __init__(self):
self.a = []
self.b = 2
使用bar.a
回報[]
和bar.b
回報2
而foo.a
回報['item']
和foo.b
回報5
。
這是怎麼回事假設工作?在我編寫Python的3年中,我顯然從未遇到過這個問題,並希望得到一些解釋。我也無法在文檔中的任何地方找到它,所以給我一個參考將是非常好的,如果可能的話。 :)
你是否確定*'bar.b'是5? – SingleNegationElimination