我想了解Python中的異常行爲。爲什麼這個Python類複製另一個類的內容?
我的下一個Python代碼:
class IntContainer:
listOfInts = []
def __init__(self, initListOfInts):
for i in initListOfInts:
self.listOfInts.append(i)
def printInts(self):
print self.listOfInts
if __name__ == "__main__":
intsGroup1 = [1,2,3,4]
intsGroup2 = [4,5,6,7]
intsGroups = [intsGroup1,intsGroup2]
intsContainers = []
for ig in intsGroups:
newIntContainer = IntContainer(ig)
intsContainers.append(newIntContainer)
for ic in intsContainers:
print ic.listOfInts
我希望得到的東西,如:
[1, 2, 3, 4]
[4, 5, 6, 7]
,但我得到:
[1, 2, 3, 4, 4, 5, 6, 7]
[1, 2, 3, 4, 4, 5, 6, 7]
我查了下一個問題:
why is python reusing a class instance inside in function
還有很多Python的參考,但我不明白髮生了什麼。我認爲這與newIntContainer
標識符重用相關,但我對此深有體會。
爲什麼Python似乎重新使用新對象的最後一個引用,即使我已將它添加到永久列表中?我能做些什麼來解決這種行爲?
感謝;)
非常感謝...... 我在C++來了,PHP和其他地方,你不會有這樣的事情類共享變量(類變量)...我只是認爲我正在定義一個常規的對象參數(實例變量)... – fjfnaranjo 2010-04-21 15:45:25
Actu同盟,C++和PHP都有類(靜態)字段。 – 2010-04-21 15:49:26