2012-05-20 73 views
2

如果已經回答了此問題,我很抱歉,我無法找到它。 使用多重繼承時,如何使用特定父級的方法? 比方說,我有這樣的事情在Python中調用具有多重繼承的父類

Class Ancestor: 
    def gene: 

Class Dad(Ancestor): 
    def gene: 
     ... 

Class Mom(Ancestor): 
    def gene: 
     ... 

Class Child(Dad,Mom): 
    def gene: 
     if(dad is dominant): 
      #call dad's gene 
     else: 
      #call mom's gene 

我怎麼能這樣做? super()沒有指定特定父項的選項。 謝謝! 編輯:忘了提及一個非常重要的細節 - 方法是相同的名稱,並被覆蓋。對不起,再次感謝!

回答

12

這不是super的用途。 super只是爲了調用繼承層次結構中的下一個項目,無論它是什麼 - 換句話說,當你不知道或關心該層次結構是什麼時,應該使用它。

對於您的情況,您可能只是想直接調用該方法。但請注意,你實際上並不需要在所有處理的祖先,因爲methodAmethodB不反正覆蓋:所以你可以打電話給他們上self

if whatever: 
    self.methodA() 
else: 
    self.methodB() 

如果你是在你的情況重寫的方法,您需要指定祖先:

class C(A, B): 
    def methodA(self): 
     if whatever: 
      A.methodA(self) 
     else: 
      B.methodA(self)