gpt4 book ai didi

Python - 附加到在 for 循环内声明的对象列表

转载 作者:行者123 更新时间:2023-11-28 21:53:31 26 4
gpt4 key购买 nike

我遇到了一个非常具体的问题,我无法在网络上的任何地方找到答案。我是 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"]`

这让我相信 Example(在本例中称为 Object)不会在每次迭代中重新创建,而是在每次迭代中都得到维护,并在每次 for 循环继续时访问。

我的简单问题;在 python 中,我该如何更改它?

最佳答案

将您的类定义更改为:

class Example:
def __init__(self):
self.items = []

问题是 items 没有绑定(bind)到每个对象的实例,它是类定义的一部分。因为 items 是一个类变量,它在 Example 的实例之间共享。

关于Python - 附加到在 for 循环内声明的对象列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128733/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com