您的问题是由以下事实引起的,即记录器中字典中的值的许多列表实际上都引用了相同的list_of_objects.
将其与此代码进行比较:
x = [1,2,3] # x refers to a list
y = x # y is another reference to the same list
x.append(4) # modify the list through x
print(y) # prints [1, 2, 3, 4], even though we accessed via y
您的代码正在做同样的事情,但不是像xand这样的简单变量,而是y通过属性和字典值(Inventory.list_of_objects以及Inventory.logger.dict_of_positions[counter]每个counter值)引用列表。
我不完全理解您的代码应该做什么,但我怀疑您可以通过更改increase_counter为list_of_objects使用list构造函数创建列表的副本来避免此问题:
def increase_counter(self):
self.logger.add_list_at_counter(self.counter, list(self.list_of_objects)) # new list
self.counter += 1
相关分类