0
我有以下代碼:調用父類方法在多重繼承
class A:
pass
class B(A):
def foo(self, a):
if a:
return 'B'
return super(B, self).foo(a)
class C:
def foo(self, a):
return 'C'
class D(B, C):
def foo(self, a):
return super().foo(a)
d = D()
print(d.foo(0))
當我打電話d.foo(0)
基於MRO它首先調用B
類的和內部的foo
方法,如果條件是錯誤的,它將返回super(B, self).foo(0)
但類A
沒有foo的方法,我希望這樣的錯誤:
AttributeError: 'super' object has no attribute 'foo'
,但它從C
類返回'C'
。爲什麼?
這就是'super'的重點。想一想 - 如果是直接調用父項,那麼在語言中根本不需要'超級',你可以直接在這裏調用'A'。 – wim