更改类的一个实例会改变整个类。

16 浏览
0 Comments

更改类的一个实例会改变整个类。

这个问题已经有答案了:

\"Least Astonishment\" and the Mutable Default Argument

Python: Dictionary as instance variable [duplicate]

class class1():
    def __init__(self,dict1={1:2,3:4}):
        self.dict1=dict1
        return
list1=[]
list1.append(class1())
list1.append(class1())
list1.append(class1())
list1[0].dict1[1]="test"
print(list1[0].dict1,list1[1].dict1,list1[2].dict1)

输出:

{1: \'test\', 3: 4} {1: \'test\', 3: 4} {1: \'test\', 3: 4}

每当我改变“list1”的第一个项的元素,比如将键“1”的值从“2”改为“test”,所有元素都会采用相同的更改。

我该如何仅改变第一个元素?

提前致谢。

admin 更改状态以发布 2023年5月24日
0
0 Comments

试试这个:

class class1():
    def __init__(self,dict1={1:2,3:4}):
        self.dict1=dict1.copy()
        return

0