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'>)
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值