我必须继承Parent实例变量a
的动态值。我尝试使用super
获取在Parent的init
构造函数中定义的值,并且尝试过传递父对象。
请参阅下面的代码段
class Parent(object):
def __init__(self):
self.a = 1
def test(self):
self.a = 2
class Child(Parent):
def __init__(self):
super(Child, self).__init__()
class Child1(Parent):
def __init__(self, parent):
self.a = parent.a
p = Parent()
c = Child()
c1 = Child1(p)
p.test()
print p.a #2
print c.a #1
print c1.a #1
如果我使用下面的代码,问题就会得到解决。但是有什么方法可以获得父初始化后更改的父实例变量值。
c.test()
print c.a #2
c1.test()
print c1.a #2
请为此问题提出任何解决方案。
答案 0 :(得分:1)
您需要在此处使用委托。您应该存储父级,然后定义一个获取父级self.a
值的属性,而不是直接将parent.a
分配给a
的值。请求。
class Child1(object):
def __init__(self, parent):
self.parent = parent
@property
def a(self):
return self.parent.a