Python 中的 MRO —— 方法搜索顺序

Posted amcomputer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python 中的 MRO —— 方法搜索顺序相关的知识,希望对你有一定的参考价值。

问题的提出:

● 如果 不同的父类 中存在 同名的方法,子类对象 在调用方法时,会调用 哪一个父类中的方法呢?


提示:开发时,应该尽量避免这种容易产生混淆的情况! —— 如果 父类之间 存在 同名的属性或者方法,应该 尽量避免 使用多继承

Python 中的 MRO —— 方法搜索顺序(知道)

● 在搜索方法时,是按照 mro 的输出结果 从左至右 的顺序查找的
● 如果在当前类中 找到方法,就直接执行,不再搜索
● 如果 没有找到,就查找下一个类 中是否有对应的方法,如果找到,就直接执行,不再搜索
● 如果找到最后一个类,还没有找到方法,程序报错

● Python 中针对 类 提供了一个 内置属性 mro 可以查看 方法 搜索顺序
● MRO 是 method resolution order,主要用于 在多继承时判断 方法、属性 的调用 路径

输出结果

以上是关于Python 中的 MRO —— 方法搜索顺序的主要内容,如果未能解决你的问题,请参考以下文章

python 类 五 : 多重继承的MRO顺序

Method Resolve Order (MRO) - 类对象属性的解析顺序

Python的方法解析顺序(MRO)

python MRO方法解决顺序 - 钻石关系

11_6 Python高级

python中的super()用法以及多继承协同任务