📅  最后修改于: 2023-12-03 15:19:28.638000             🧑  作者: Mango
在Python中,一个类可以从多个父类中继承属性和方法,这就是多重继承。
class SubClass(BaseClass1, BaseClass2, BaseClass3):
pass
多重继承中,子类继承了多个父类的属性和方法,可以在子类中调用这些父类的方法和属性。
多重继承有以下几个特点:
在多重继承中,如果多个父类中有同名的方法,那么Python会按照一定的顺序来调用这些方法,这个顺序被称为方法解析顺序(MRO)。
Python中的MRO采用的是C3算法,通过继承关系构建一个有向无环图(DAG),然后计算出一个拓扑序列,按照拓扑序列中的顺序来调用方法。
Python中可以通过以下方式来查看一个类的MRO:
print(SubClass.mro())
下面是一个多重继承的示例:
class A:
def say_hello(self):
print("Hello from class A")
class B:
def say_hello(self):
print("Hello from class B")
class C(A, B):
pass
c = C()
c.say_hello() # 输出:Hello from class A
在这个例子中,类C继承了类A和类B的say_hello方法,因为在类C的MRO中,先调用类A的say_hello方法,所以输出结果为Hello from class A。
多重继承是一种有效的代码复用方式,可以让一个类从多个父类中继承属性和方法,但是需要注意处理好MRO中的方法冲突问题。