2

この質問がすでに回答されている場合は、前もってお詫び申し上げます。見つけられませんでした。多重継承を使用する場合、特定の親のメソッドを使用するにはどうすればよいですか? 私がこのようなものを持っているとしましょう

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() には、特定の親を指定するオプションがありません。ありがとう!編集:非常に重要な詳細について言及するのを忘れていました-メソッドは同じ名前であり、オーバーライドされています。申し訳ありませんが、もう一度ありがとう!

4

1 に答える 1

12

それはそのsuperためではありません。superそれが何であれ、継承階層の次の項目を呼び出すことを意図しているだけです。つまり、その階層が何であるかがわからない、または気にしないときに使用することになっています。

あなたの場合、おそらくメソッドを直接呼び出したいだけです。ただし、実際には祖先をまったく処理する必要がないことに注意してください。なぜならmethodA、 andmethodBはとにかくオーバーライドされないためですself

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

メソッドをオーバーライドしている場合は、祖先を指定する必要があります。

class C(A, B):
    def methodA(self):
        if whatever:
            A.methodA(self)
        else:
            B.methodA(self)
于 2012-05-20T08:23:39.540 に答える