Python3中MRO的含义及MRO算法的继承顺序

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'>)

猜你喜欢

转载自blog.csdn.net/u011318077/article/details/85856718