当我尝试从bar()
({1}}的直接子类class B
调用class C
B
时,发现bar()
的{{1}} class A
被召唤了。但我明确要求应该使用B
版本。如何将方法解析为A
?
class A(object):
def bar(self):
print('bar from A')
class B(A):
def bar(self):
print('bar from B')
class C(B):
def bar(self):
super(B, self).bar()
c = C()
# It should print "bar from B"
c.bar()
# But actually it prints "bar from A"
答案 0 :(得分:1)
这是因为super(sub_class, instance).method()
表示在实例method
上调用sub_class
的父的方法instance
。由于B
的父级是A
,因此结果很有意义。
你想要的是super(C, self).bar()
。