- MRO
Method Resolution Order,即方法解析顺序,是用来处理Python中的二义性问题的算法。 - 二义性
Python因为支持多继承,而多继承的编程语言往往存在二义性问题。 - 二义性问题
魔鬼三角继承:有两个基类A和B,A和B中都定义了方法f(),C类继承了A类和B类,那么调用C类的f()时出现不确定情况。
恐怖菱形继承:有一个基类A,定义了方法f(),B类和C类继承了A类(的f()方法),D类继承了B和C类,那么出现一个问题,D不知道应该继承B的f()方法还是C的f()方法。 - 深度遍历优先算法
指代一种搜索算法,其算法核心是尽可能先对纵深方向进行搜索,当一条分支搜索到叶子结点后,终止,从左往右找到下一条分支,继续开始纵深方向的搜索,直至搜索到最后一条分支的叶子节点,停止搜索。 - 广度遍历优先算法
指代一种搜索算法,其算法核心是针对树形结构的每一层,从根结点出发,按照一层一层的顺序,每层从左至右的顺序搜索,当搜索到某一层最后一个非叶子结点,结束该层搜索,进入下一层,继续搜索,直至搜索到最后一个叶子节点,停止搜索。 - 经典类
一种没有继承的类,所有的类型都是type类型,如果经典类作为父类,子类调用父类构造函数会报错。一种没有继承的类,所有的类型都是type类型,如果经典类作为父类,子类调用父类构造函数会报错。 - 新式类
每一个类都继承自一个基类,默认继承自object,子类可以调用基类的构造函数,所有类都有一个公共
Python新式类MRO算法-C3算法
最新推荐文章于 2021-12-20 16:21:38 发布
Python的MRO(Method Resolution Order)用于解决多继承带来的二义性问题,如魔鬼三角和恐怖菱形继承。二义性可能导致无法确定方法的调用路径。为了解决这个问题,Python采用了C3线性化算法,确保调用顺序的一致性。新式类默认继承自object,允许子类调用父类构造函数,增强了多继承的灵活性。
摘要由CSDN通过智能技术生成