0

我有一个名为的对象列表TerrainTile。这些实例中的每一个都有一个名为 的列表resourceList

resourceList = []

我在此方法中附加了一个调用obj此列表的对象:

def add_resource_object (self, obj):
    self.resourceList.append(obj)
    return

出于某种原因,不是每个单独的实例都有自己的名为 的列表resourceList,而是似乎所有实例都共享同一个resourceList列表,并且当它附加到所有实例时都会附加到。

为什么要.append()附加到 的所有实例TerrainTile

4

2 回答 2

1

根据您上面的代码段:

resourceList = []

您正在创建在所有实例之间共享的类变量,而不是特定实例本地的实例变量。相反,像这样初始化您的实例变量:

def __init__(self):
    self.resourceList = []

有关详细信息,请参见此处:https ://docs.python.org/3/tutorial/classes.html#class-and-instance-variables

于 2018-04-30T01:32:15.163 回答
0

如评论和其他答案中所述,您将相同的实例变量传递给每个列表。根据对象的类型,您可以在将其添加到每个列表之前对其进行复制。

像这样导入

from copy import deepcopy

像这样使用它

new_obj = deepcopy(obj)
于 2018-04-30T01:34:30.380 回答