1. 程式人生 > >python之類中的super函式

python之類中的super函式

作用

實現程式碼重用

思考: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__),結果如下圖