从超类的超类调用方法
Call a method from superclass of superclass
我有一个例子。我有两个 classes。 A
是 B
的超级class。
class A(object):
def p(self):
print "a"
class B(A):
def p(self):
print "b"
super(A, self).p()
现在我有一个新的 class C
。 class C
是 B
的子 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()
,而只需重复使用这些辅助方法。
我有一个例子。我有两个 classes。 A
是 B
的超级class。
class A(object):
def p(self):
print "a"
class B(A):
def p(self):
print "b"
super(A, self).p()
现在我有一个新的 class C
。 class C
是 B
的子 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()
,而只需重复使用这些辅助方法。