我有一个python类A和它的子B.我创建一个B类对象传递一些列表类型参数,这些参数附加在B中,结果存储在类A中.我希望能够更改其中一个初始值参数,看到变化反映没有进一步的ado.让我用一个例子来解释一下:
class A():
def __init__(self,data):
self.a=data
class B(A):
def __init__(self,x,y):
self.x=x
self.y=y
A.__init__(self,self.x+self.y)
def change_x(self,x):
self.x = x
Run Code Online (Sandbox Code Playgroud)
现在,我跑了
test = B([1, 2], [3,4])
print(test.a)
Run Code Online (Sandbox Code Playgroud)
我显然得到[1,2,3,4].如果我更改部分列表如下:
test.change_x([3,4])
print(test.a)
Run Code Online (Sandbox Code Playgroud)
我想得到[3,4,3,4],而不是我收到[1,2,3,4].当然test.a仅在实例化期间进行评估.
我理解为什么不是这种情况,我读到了关于生成器但没有设法弄清楚如何实现它.我不想最终得到一个我只能迭代一次的迭代.
谁能帮助我?一个干净的方法解决这个问题?