作用
實現**重用
思考: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...