如何修改字典中对象的列表属性

时间:2018-12-09 14:18:48

标签: python

为了动态创建对象并有效地找到它们,我将它们存储在字典中。但是,在处理那些引用的对象时遇到了问题

我的对象有一个列表属性,但是,如果不将这些属性应用于列表中的所有值,我将无法找到对这些属性的调整方法

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的对象执行,但是将应用于字典中的所有对象

使用深层副本可以解决此问题,但我希望有更好的方法,并且希望了解为什么用这种方式解释代码

0 个答案:

没有答案