2017-02-14 92 views
3

如何讓公共子類初始化它所繼承的所有父類?Python多重繼承,從一個公共子類初始化

class Mom(object): 
    def __init__(self): 
     print("Mom") 

class Dad(object): 
    def __init__(self): 
     print("Dad") 

class Child(Mom, Dad): 
    def __init__(self): 
     super(Child, self).__init__() 

c = Child() #only prints Mom 
+0

這個任務真的沒有任何意義。當然,你可以調用所有的繼承順序,但仍然 - 爲什麼你需要它? – Sergius

回答

5

它們缺少MomDad類中的super()調用,它們是協作子類工作所需的類。

class Mom(object): 
    def __init__(self): 
     super(Mom, self).__init__() 
     print("Mom") 

class Dad(object): 
    def __init__(self): 
     super(Dad, self).__init__() 
     print("Dad") 

class Child(Dad, Mom): 
    def __init__(self): 
     super(Child, self).__init__() 
c = Child() # Mom, Dad 
3

你需要調用super在媽媽的__init__爲好。