从超类的超类调用方法

Call a method from superclass of superclass

我有一个例子。我有两个 classes。 AB 的超级class。

class A(object):
   def p(self):
      print "a"


class B(A):
   def p(self):
      print "b"
      super(A, self).p()

现在我有一个新的 class C。 class CB 的子 class,应该再次覆盖方法 p,就像这样:

class C(B):
   def p(self):
      print "c"
      # here call the method p of the 'supersuper'class A
      # without calling the method p of the superclass B
   ...

如何在class[=14=中覆盖superclassB的方法p() ]并调用supersuperclassA的方法p()而不调用p的方法超级classB?有人有想法吗?

P/S: 方法名必须相同

直接调用A.p(self)即可,这不是super()设计支持的。请注意,您必须手动传入 self,因为 A.p() 是一种 unbound 方法。

但是,您想重新考虑您的 class 设计。也许您想引入辅助方法;然后可以从 A.p()C.p() 而不是 B.p() 调用其中之一?这样 B.p() 根本就不必使用 super().p() ,而只需重复使用这些辅助方法。