即時通訊有一個問題,瞭解類/實例變量如何在python中工作。我不明白爲什麼當我嘗試此代碼列表變量似乎是一個類變量python類實例變量和類變量
class testClass():
list = []
def __init__(self):
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
輸出:
['thing']
['thing', 'thing']
,當我做到這一點似乎是可變的一個實例
class testClass():
def __init__(self):
self.list = []
self.list.append('thing')
p = testClass()
print p.list
f = testClass()
print f.list
輸出:
['thing']
['thing']
非常感謝
喬恩
如果我理解正確,那麼您需要提供有關Python語法的特定設計決策背後的基本原理。對於這樣的問題,最好的答案是「因爲它符合語言的精神」,或者更明目張膽地說:「問問它的創造者」。 – Xion 2012-01-02 13:51:33
好吧,所以變量是默認的類變量,這是我的困惑源於,這應該是我的問題,變量默認爲類變量 – 2012-01-02 13:55:42
@jonathantopf不,變量默認情況下不是類變量。在Python中,你不聲明可變參數。對於這一點,它們實際上並不是變量(python是一個_variableless_ lanuage),只是名稱。而且你不要聲明或分配名字,你把它們綁定到一個對象上。運行時中的每個對象都有一個名稱到對象的字典。即使兩個對象屬於同一個類,它們也可以有非常不同的字典。 – rodrigo 2012-01-02 14:06:42