首页 > 解决方案 > 为什么追加到一个对象的列表属性,会修改同一类下所有对象的属性?

问题描述

我有一个具有默认列表属性的类。创建对象时,列表通常为空。还有一个对象方法可以将项目附加到此列表中。但是,每次使用 self.list1.append("string") 向此添加任务时,同一类下的所有对象都会受到影响。是否有一个原因?

我尝试添加一个独立函数来执行此操作,尝试了一个实例方法并在 shell 中进行了尝试。我得到相同的结果。附加了所有类对象的 list1 属性。

我有什么明显的遗漏吗?

“tasks”是作为类对象属性的列表:

    def __init__(self,id,tasks=[]):
        self.id=id
        self.tasks=tasks
        print('Added')

方法

    def addt(self,task):   
        self.tasks.append(task)

编辑:澄清这个问题不是关于 (tasks=[]) 默认分配的行为,而是将值附加到类的所有对象的意外行为。即 a.addt 似乎也会影响对象 b,这也是意料之外的。

标签: pythonpython-3.xclass

解决方案


推荐阅读