MRO(Method Resolution Order):方法解析顺序。
Python语言包含了很多优秀的特性,其中多重继承就是其中之一,但是多重继承会引发很多问题,比如二义性,Python中一切皆引用,这使得他不会像C++一样使用虚基类处理基类对象重复的问题,但是如果父类存在同名函数的时候还是会产生二义性,Python中处理这种问题的方法就是MRO。
如何查看一个类中的方法继承顺序,可以直接打印出mro顺序,见以下代码:
class Person():
name = "Felix"
age = 18
def eat(self):
print("Eat...")
def drink(self):
print("Drink...")
def sleep(self):
print("Sleep...")
class Teacher(Person):
def work(self):
print("Work...")
class Student(Person):
def study(self):
print("Study...")
# 助教是学生中选取,具有老师的功能,也有学习的功能
class Tutor(Teacher, Student):
pass
t = Tutor()
print(Tutor.__mro__)
输出结果为mro顺序
(<class '__main__.Tutor'>, <class '__main__.Teacher'>, <class '__main__.Student'>, <class '__main__.Person'>, <class 'object'>)