Python新手在这里,会欣赏一些多重继承的帮助!
考虑以下类层次结构:
class Base1:
def display(self):
print('Base1')
class Base2:
def display(self):
print('Base2')
class Derived1 (Base1):
def display(self):
super().display()
print('Derived1')
class Derived2 (Base2):
def display(self):
super().display()
print('Derived2')
class Derived (Derived1, Derived2):
def display(self):
super().display()
print('Derived')
Derived().display()
我原以为这会输出打印出层次结构中涉及的所有类的名称,但事实并非如此。此外,如果我向super().display()
和Base1
添加Base2
,我会收到错误AttributeError: 'super' object has no attribute 'display'
。
出了什么问题?
答案 0 :(得分:2)
类Base1
和Base2
隐式继承自object
的{{1}}方法。这解释了display
例外。
此代码的输出应为:
AttributeError: 'super' object has no attribute 'display'
从多个类继承时,在调用Base1
Derived1
Derived
时,会从左到右搜索属性。因此,在super
上找到display
,因此在方法解析期间不会查看Derived1
。有关详细信息,请参阅this question。