我想类似的问题还有很多,但我不知道如何搜索这种情况。假设我有以下代码结构:
class Parent():
def method(self):
self.helper()
print('Parent method')
def helper(self):
print('Parent helper')
class Child(Parent):
def method(self):
super().method()
print('Child method')
def helper(self):
print('Child helper')
当我调用
Child.method()
时,super()
调用按预期运行 Parent.method()
。然而,从Parent.method()
开始,被调用的助手是Child.helper()
。为什么会出现这种情况?我怎样才能让它运行Parent.helper()
?
你可以想象你的代码加载后实际上是这样的:
class Child(Parent):
def method(self):
# super().method()
# the line above if same as:
self.helper()
print('Parent method')
# end
print('Child method')
def helper(self):
print('Child helper')