【发布时间】:2014-11-25 13:09:06
【问题描述】:
我遇到了一个非常具体的问题,我无法在网络上的任何地方找到答案。我是 python 代码的新手(C++ 是我的第一语言),所以我假设这只是一个语义问题。我的问题是关于在 for 循环范围内声明的对象。
这段代码的目的是在 for 循环中创建一个新的临时对象,将一些项目添加到它的列表中,然后将对象放入 for 循环之外的列表中。在 for 循环的每次迭代中,我希望创建一个新的、单独的对象来填充项目。但是,每次执行 for 循环时,对象的列表都已经填充了上一次迭代中的项目。
我有一个更大的程序也有同样的问题,但我没有包含一个庞大的程序,而是写了一个有相同语义问题的小例子:
#Test
class Example:
items = []
objList = []
for x in xrange(5):
Object = Example()
Object.items.append("Foo")
Object.items.append("Bar")
print Object.items
objList.append(Object)
print "Final lists: "
for x in objList:
print x.items
到程序结束时,objList 中的每个项目(甚至是第一次迭代中的项目)都包含
["Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar","Foo","Bar"]`
这让我相信示例(在本例中称为 Object)不会在每次迭代中重新创建,而是在每次迭代中保持不变,并在每次 for 循环继续时访问。
我的简单问题;在python中,我该如何改变这个?
【问题讨论】:
标签: python class object for-loop static