假設你有這樣的事情:Python實例和屬性:這是一個錯誤還是我完全錯了?
class intlist:
def __init__(self,l = []):
self.l = l
def add(self,a):
self.l.append(a)
def appender(a):
obj = intlist()
obj.add(a)
print obj.l
if __name__ == "__main__":
for i in range(5):
appender(i)
一個函數創建intList中的實例,並在這個新的實例的方法追加在實例屬性升調用。
如何產生該代碼的輸出是:
[0]
[0,1]
[0,1,2]
[0,1,2 ,3]
[0,1,2,3,4]
? 如果切換
obj = intlist()
與
obj = intlist(l=[])
我得到所需的輸出
[0]
[1]
[2]
[3]
[4]
爲什麼會發生這種情況?
感謝
+1措辭這個這樣的問題,並從一開始就承認錯誤。這就是我們學習的方式! :) – jathanism 2010-03-08 17:01:24
相關:http://stackoverflow.com/questions/1011431/python-things-one-must-avoid – 2010-03-08 17:07:42
謝謝大家,現在我明白了,我必須更多關注我作爲默認值使用的內容。再次感謝:) – 2010-03-09 09:51:35