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并且methodB无论如何都不会被覆盖:所以您可以调用它们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 回答