Python多重继承

Python多重继承

      • 1、Python多重继承
      • 2、Python多重继承的顺序


1、Python多重继承


继承是面向对象编程的一大特征,继承可以使得子类具有父类的属性和方法,并可对属性和方法进行扩展。Python中继承的最大特点是支持多重继承,也即一个类可以同时继承多个类

我们可以在新类中使用父类定义的方法,也可以定义同名方法,覆盖父类的方法,还可以在自定义的方法中使用super()调用父类的同名方法

那么如果从多个类继承,多个类中又实现了同名的方法,那岂不是乱套了吗?

class A(object):
    def f0(self):
        print('A f0')

    def f1(self):
        print('A f1')

class B(object):
    def f0(self):
        print('B f0')

    def f1(self):
        print('B f1')

class C(A, B):
    def f0(self):
        print('C f0')

class D(B, A):
    def f1(self):
        print('D f1')
# __mro__属性用于记录类继承的关系,返回一个元组类型
print(C.__mro__)    # (, , , )
c = C()
c.f0()              # C f0
print(D.__mro__)    # (, , , )
d = D()
d.f1()              # D f1

2、Python多重继承的顺序


我们发现,Python支持多继承是有顺序的。那么Python是如何确定它们继承的顺序呢?

Python多继承顺序被称为方法解释顺序(MRO,Method Resolution Order)。Python2.3版本后采用C3线性序列算法来计算MRO

类之间的继承关系可以用有向无环图(DAG,Directed Acyclic Graph)来描述,每个顶点代表一个类,顶点之间的有向边代表类之间的继承关系。C3算法对所有顶点进行线性排序

Python多重继承_第1张图片

参考文档:https://pythonhowto.readthedocs.io/zh-cn/latest/object.html#id29

你可能感兴趣的:(#,Python,python,开发语言)