1
類的頂級屬性,我想了解以下情況:在哪裏存儲在Python
>>> class Test:
... a = 1
...
>>> x = Test()
>>> x.__dict__
{}
>>> x.a
1
>>> x.__dict__
{}
>>> x.a = 1
>>> x.__dict__
{'a': 1}
哪裏a
屬性存儲在開始和怎麼就變成了__dict__
可見只有在分配後?
爲什麼'x.a = 1'創建實例屬性而不是改變類屬性? – Mkoch
如果我在類中說'a = []',那麼'x.a.append(2)'會改變class屬性。如果現在我實例化一個新實例,讓我們說'y','y.a'也是'[2]'。 – Mkoch
'append'不會更改類屬性,它會更改由class屬性引用的對象。而且每個類的實例都有相同的對象,所以對象的內容也是一樣的。 – Daniel