继承是面向对象编程的一个重要的方式,通过继承,子类就可以扩展父类的功能。在python中一个类能继承自不止一个父类,这叫做python的多重继承(Multiple Inheritance )。
语法
class SubclassName(BaseClass1, BaseClass2, BaseClass3, ...):
pass
菱形继承
在多层继承和多继承同时使用的情况下,就会出现复杂的继承关系,多重多继承。
其中,就会出现菱形继承。如下图所示。
在这种结构中,在调用顺序上就出现了疑惑,调用顺序究竟是以下哪一种顺序呢
- D->B->A->C(深度优先)
- D->B->C->A(广度优先)
下面我们来解答下这个问题。
举个例子来看下:
class A():
def __init__(self):
print('init A...')
print('end A...')
class B(A):
def __init__(self):
print('init B...')
A.__init

本文探讨了Python中的多重继承,特别是菱形继承问题。讲解了在多重多继承结构中,方法解析顺序(MRO)如何遵循C3算法以避免重复调用,并通过示例说明了`super()`函数在解决此类问题中的作用。还补充介绍了Python中的经典类与新式类在继承顺序上的区别。
8161

被折叠的 条评论
为什么被折叠?



