python之類中的super函式

2022-05-01 16:09:09 字數 641 閱讀 6555

作用

實現**重用

思考: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()

結果:dbc

a如果super函式只是呼叫父類的話順序應該是d、b、a,可見super函式不是單純的呼叫父類,而是按照mro演算法呼叫:

print(d.__mro__),結果如下圖

Python中super的用法

super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序 mro 重複呼叫 鑽石繼承 等種種問題。總之前人留下的經驗就是 保持一致性。要不全部用類名呼叫父類,要不就全部用 super,不要一半一半。普通繼承 python view p...

Python中super的用法

分類 python 2014 05 21 17 50 6637人閱讀收藏 舉報super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序 mro 重複呼叫 鑽石繼承 等種種問題。總之前人留下的經驗就是 保持一致性。要不全部用類名呼叫父類...

Python中的super使用

super 是用來解決多重繼承問題的,直接用類名呼叫父類方法在使用單繼承的時候沒問題,但是如果使用多繼承,會涉及到查詢順序 mro 重複呼叫 鑽石繼承 等種種問題。總之前人留下的經驗就是 保持一致性。要不全部用類名呼叫父類,要不就全部用 super,不要一半一半。普通繼承 class foopare...