python多繼承(鑽石繼承)的問題和解決
阿新 • • 發佈:2018-12-16
在菱形多繼承中,如果用父類.__init__()來呼叫父類的初始化方法,最上層會執行兩次,所以遇到這種情況,python中用super.__init__()來解決這個問題。
class Grand_father(object): def __init__(self): print('爺爺') class Father_left(Grand_father): def __init__(self): super(Father_left,self).__init__() # Grand_father.__init__(self) print('左邊爸爸') class Father_right(Grand_father): def __init__(self): super(Father_right, self).__init__() # Grand_father.__init__(self) print('右邊爸爸') class Me(Father_right,Father_left): def __init__(self): super(Me, self).__init__() # Father_left.__init__(self) # Father_right.__init__(self) print('我') def main(): me = Me() if __name__ == '__main__': main()
如果需要呼叫左邊爸爸,那就執行super(左邊爸爸類).