我有一个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
现在,我跑了
test = B([1, 2], [3,4])
print(test.a)
我显然得到了[1,2,3,4]。如果我将列表的一部分更改如下:
test.change_x([3,4])
print(test.a)
我想要得到[3,4,3,4],而不是得到[1,2,3,4]。当然,test.a只在实例化过程中计算。你知道吗
我理解为什么不是这样,我读了一些关于生成器的文章,但没有弄清楚如何实现它。我不想以只能迭代一次的iterable结束。你知道吗
有人能帮我吗?一个干净的解决方法?你知道吗
有没有理由拥有类
A
?您可以创建一个属性或方法a
,它在类B
中返回您想要的内容。你知道吗小注:在这个实现中,
change_x
方法应该是不必要的。直接访问属性(例如test.x = x
)通常比使用getter和setter更具python风格。你知道吗我最终直接存储self.a(在a中)的所有部分,方法是从self.a的继承类中进行切片/索引。我按照Israel Unterman的建议添加了一个方法“B.update_crc(self)”,以重新评估self.a的某些部分,以防修改。你知道吗
谢谢,我的第一个方法不是正确的:)
您需要“手动”实现它。例如,像这样:
相关问题 更多 >
编程相关推荐