Python OOP追踪小混乱

时间:2016-12-10 01:40:13

标签: python oop

class GrandParent():
    def __init__(self, a, b):
        self._a = a
        self._b = b

    def blah(self):
        return "GP:" + self._a + self._b

class Parent2(GrandParent):
    def __init__(self, a, b, c):
        self._a = b
        self._b = a
        self._c = self.blah()

class Child2(Parent2):
    def __init__(self, a, b, c, d):    
        Parent2.__init__(self, a, b, c)

    def blah(self):
        return ("C2: " + self._a + self._b
        + self._c + self._d)


c2 = Child2("A", "B", "C", "D")

这是我应该追踪的代码。我创建了一个c2的对象Child2。我进去了Child2.__init__。我进去了Parent2.__init__。我初始化self._aself._b

我的问题在于self._c

Parent2没有blah()方法,所以我希望它从self._c获得GrandParent.blah(),而是转到Child2.blah()。为什么会这样?

1 个答案:

答案 0 :(得分:1)

由于selfChild2的直接实例,因此self.blah()必须等同于Child2.blah(self)。在该调用之前,代码恰好位于Child2父项的方法中。