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._a
,self._b
。
我的问题在于self._c
。
Parent2
没有blah()
方法,所以我希望它从self._c
获得GrandParent.blah()
,而是转到Child2.blah()
。为什么会这样?
答案 0 :(得分:1)
由于self
是Child2
的直接实例,因此self.blah()
必须等同于Child2.blah(self)
。在该调用之前,代码恰好位于Child2
父项的方法中。