1. 程式人生 > >python多繼承(鑽石繼承)的問題和解決

python多繼承(鑽石繼承)的問題和解決

在菱形多繼承中,如果用父類.__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(左邊爸爸類).