前言
在Python中,如果只是单继承,调用父类方法,使用super()函数即可,但是,如果是多重继承,这个时候调用super方法,可能会出现自己预期外的结果, 这里面涉及到的,就是MRO(Method Resolution Order) 方法解析顺序的问题了。
正文
单继承的问题很简单,如下
class B:
def __init__(self):
print('b')
class D(B):
def __init__(self):
super().__init__()
print('s')
# print(C.mro())
D()
>>> b
s
可如果是多继承,首先看代码AA
class A:
def __init__(self):
print('a')
class B(A):
def __init__(self):
super(B, self).__init__()
print('b')
class C(A):
def __init__(self):
super(C,self).__init__()
print('c')
class D(B,C):
def __init__(self):
super(D,self).__init__()
print('d')
print(D.mro())
D()
>>> [<class '__main__.D'>, <c