【问题标题】:changing an instance of a class changes entire class [duplicate]更改类的实例会更改整个类[重复]
【发布时间】:2020-11-09 00:13:50
【问题描述】:
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:'测试',3:4} {1:'测试',3:4} {1:'测试',3:4}

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

如何做到只有第一个元素被改变?

提前致谢。

【问题讨论】:

  • def __init__(self,dict1=None): if not dict1: self.dict1=dict1 or {1:2,3:4}

标签: python python-3.x class dictionary


【解决方案1】:

试试这个:

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

【讨论】:

    猜你喜欢
    • 2017-11-15
    • 2023-01-08
    • 2022-10-15
    • 1970-01-01
    • 2014-09-16
    • 2020-04-02
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    相关资源
    最近更新 更多