我有一个名为TerrainTile的对象列表。 这些实例中的每一个都有一个名为resourceList的列表。
resourceList = []
我在此方法中将名为obj的对象附加到此列表中:
def add_resource_object (self, obj):
self.resourceList.append(obj)
return
由于某种原因,而不是每个单独的实例都有自己的名为resourceList的列表。似乎所有实例都共享相同的resourceList列表,并且当它附加到所有实例时都附加到。
我一遍又一遍地检查但似乎无法弄清楚为什么.append()附加到TerrainTile的所有实例
先谢谢!
编辑:解决方案是在 init 构造函数中声明类的变量,而不是作为类本身的成员。谢谢你!
答案 0 :(得分:1)
根据您的上述代码段:
resourceList = []
您正在创建一个在所有实例之间共享的类变量,而不是一个特定实例本地的实例变量。相反,初始化您的实例变量,如下所示:
def __init__(self):
self.resourceList = []
详情请见此处:https://docs.python.org/3/tutorial/classes.html#class-and-instance-variables
答案 1 :(得分:0)
如评论和其他答案中所述,您将相同的实例变量传递给每个列表。根据对象的类型,您可以在将其添加到每个列表之前复制它。
像这样导入
new_obj = deepcopy(obj)
像这样使用
this.setState((prevState, props) => {
return Object.assign({}, prevState, existedCard);
});