(Python)对象字典副本无缘无故被修改

(Python)Object dict copy gets modified for no apparent reason

class Object:
    def __init__(self,dict):
        self.dict = dict

a = Object({1:"hello",2:"lol"})
b = Object(a.dict)
b.dict.pop(1) #remove the element with key 1

print(a.dict, b.dict)
>>{2: 'lol'} {2: 'lol'}

出于某种原因,“a”对象的字典也被修改了。 我用不同的属性尝试了同样的事情,比如一个 int 变量,但问题没有发生。我真的不知道该怎么办:(

你不是在复制字典,你只是将 a 和 b 指向同一个字典,这就是它改变两者的原因。

您可以使用 dict.copy() 创建浅拷贝。

b = Object(a.dict.copy())

这将复制 dict 但不会复制任何嵌套词典,因为您需要深复制。

import copy

b = copy.deepcopy(a.dict)