作用
实现代码重用
思考:super真的只是调用父类么?
super函数是按照mro算法去调用的,不bb上代码:
class A:
def __init__(self):
print('A')
class B(A):
def __init__(self):
print('B')
super().__init__()
class C(A):
def __init__(self):
print('C')
super().__init__()
class D(B, C):
def __init__(self):
print('D')
super().__init__()
d = D()
结果:
D
B
C
A
如果super函数只是调用父类的话顺序应该是D、B、A,可见super函数不是单纯的调用父类,而是按照mro算法调用:
print(D.__mro__),结果如下图