【发布时间】:2010-04-21 15:24:31
【问题描述】:
我正在尝试理解 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 似乎重用了新对象的最后一个引用,即使我已将它添加到永久列表中?我可以做些什么来解决这个问题?
谢谢 ;)
【问题讨论】: