为了动态创建对象并有效地找到它们,我将它们存储在字典中。但是,在处理那些引用的对象时遇到了问题
我的对象有一个列表属性,但是,如果不将这些属性应用于列表中的所有值,我将无法找到对这些属性的调整方法
class MyClass(object):
def __init__(self, id, my_list=[]):
self.id = id
self.my_list = my_list
def __repr__(self):
return "ID: {}. List: {}".format(self.id, self.my_list)
def append_to_my_list(self, item):
self.my_list.append(item)
def append_literal_to_my_list(self):
item = 9
self.my_list.append(item)
dict_of_objects = dict()
dict_of_objects[1] = MyClass(1)
dict_of_objects[2] = MyClass(2)
dict_of_objects[1].my_list.append(3)
dict_of_objects[1].append_literal_to_my_list()
print(dict_of_objects)
## ACTUAL RESULT
# {1: ID: 1. List: [3, 9], 2: ID: 2. List: [3, 9]}
## EXPECTED RESULT
# {1: ID: 1. List: [3, 9], 2: ID: 2. List: []}
在上面的示例中,我希望此操作仅对ID为1的对象执行,但是将应用于字典中的所有对象
使用深层副本可以解决此问题,但我希望有更好的方法,并且希望了解为什么用这种方式解释代码