【发布时间】:2020-08-06 03:17:16
【问题描述】:
我正在尝试使用 append 将变量添加到 Python 中的子级,同时更改子级中的列表会修改父级。示例代码:
class parent:
A=[1,2,3]
class child(parent):
pass
child.A.append('new variable')
parent.A
输出为:[1, 2, 3, 'new variable']
虽然我期望拥有:[1, 2, 3] 如何在不更改父级的情况下编辑子级列表(假设我不允许更改父级,所以我不能使用实例)?
【问题讨论】:
-
您可以使列表成为实例变量而不是类变量。
-
A不存在于child的__dict__属性中,因此child.A解析为parent.A。 -
不,这只是附加的问题。如果我有一个字符串而不是列表,那么它是独立的
-
是的;那是因为您无法对就地修改它的字符串做任何事情,您只能替换它。当您在列表上使用
.append时,它是同一个对象,只是它的内容发生了变化。通过分配给child.A,您不会替换parent.A,而是创建附加到child的单独A属性。
标签: python inheritance append