啥也不说直接上代码
class D:
def printA(self):
print("DDDDDD\n")
class A:
def printA(self):
print("运行A")
x = super(A,self).printA()
print("运行A")
return x
class B(A,D):
def printB(self):
print("B")
class C(B):
def printA(self):
print("运行C1次\n")
n = super(C,self).printA()
print("运行C2次")
return n
c= C()
c.printA()
其中B 继承A和D ,C继承B,将C进行实例化调用printA()方法,由于C类中用super继承了该函数,于是python去C 的父类B 中查找该函数,B 中也查找不到,于是继续到B的父类从左到右向上查找,先到A中查找该函数,但是A类中也用super继承了该函数,因此继续到B的父类D中查找,在D中查找到了该函数,于是调用它.返回结果如下:
因此python的继承机制也可以为间接继承,只要有方法体中有super即可间接向后向上继承.