当变量的值动态变化时,Python继承实例变量

时间:2017-05-07 17:38:38

标签: python inheritance

我必须继承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

请为此问题提出任何解决方案。

1 个答案:

答案 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