从超类的超类调用方法

时间:2016-05-19 13:15:44

标签: python python-2.7 superclass

我有一个例子。我有两节课。 AB的超类。

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


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

现在我有一个新班级C。类CB的子类,应该再次覆盖方法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
   ...

如何覆盖班级p()超类 B的方法C并调用p() > supersuperclass A ,无需调用超类p 的方法B?有人有想法吗?

P / S:方法名称必须相同。

1 个答案:

答案 0 :(得分:5)

只需直接致电A.p(self),这不是super()旨在支持的内容。请注意,您必须手动传入self,因为A.p()未绑定的方法。

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