方法解析顺序MRO
:多个超类的超类相同时,查找特定方法或属性时访问超类的顺序。
Python每一个有父类的类都有一个与方法解析顺序相关的特殊属性__mro__
,其是一个元组,含有方法解析时的对象查找顺序,越靠前的优先级就越高。
Python的方法解析顺序:实例本身instance、类class、超类(继承关系越近就越先定义,优先级就越高)。
class Math(object):
def info(self):
print("Math info")
class English(object):
def info(self):
print("English info")
class Book(Math, English):
pass
print(type(Book.__mro__)) # <class 'tuple'>
print(Book.__mro__) # (<class '__main__.Book'>, <class '__main__.Math'>, <class '__main__.English'>, <class 'object'>)
b = Book()
b.info() # Math info
(最近更新:2019年05月16日)