我有一个例子。我有两节课。 A
是B
的超类。
class A(object):
def p(self):
print "a"
class B(A):
def p(self):
print "b"
super(A, self).p()
现在我有一个新班级C
。类C
是B
的子类,应该再次覆盖方法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:方法名称必须相同。
答案 0 :(得分:5)
只需直接致电A.p(self)
,这不是super()
旨在支持的内容。请注意,您必须手动传入self
,因为A.p()
是未绑定的方法。
但是,您想重新考虑您的课程设计。也许你想引入辅助方法;然后可以从A.p()
和C.p()
而不是B.p()
调用其中一个?这样B.p()
就不必在所有中使用super().p()
,只需重复使用这些辅助方法。