python - 为什么追加到一个对象的列表属性,会修改同一类下所有对象的属性?
问题描述
我有一个具有默认列表属性的类。创建对象时,列表通常为空。还有一个对象方法可以将项目附加到此列表中。但是,每次使用 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,这也是意料之外的。
解决方案
推荐阅读
- python - 使用 telnetlib 读取每个命令的输出
- amazon-web-services - 如何让 AWS 返回显示用于授权的 JWT 已过期的状态代码?
- html - 如何垂直对齐多个输入字段的标签?
- python - 在 omxplayer HDMI 视频屏幕上方制作 tkinter GUI 窗口
- sparql - 按谓词属性过滤
- java - 将文件复制到 Java 中的双重存档中(另一个 zip 文件中的 zip 文件)
- visual-studio - 是否可以将视频嵌入 Windows Media Player?
- visual-studio-2017 - 删除 C:\ProgramData\Microsoft\VisualStudio\Packages 内容后 VS2017 更新不再起作用
- ansible - Ansible playbook:如何获取服务器启动或关闭状态
- python - 如何使用 Matplotlib 从头开始制作曲线动画