【发布时间】:2014-03-11 22:28:05
【问题描述】:
我正在使用一个依赖于递归方法调用的库:
class A(object):
def __init__(self):
self.foo = None
def f(self):
if not self.foo:
print("Hello")
self.foo = 100
self.f()
我想在使用原始实现时覆盖方法 f():
class B(A):
def f(self):
super(B, self).f()
print("World")
这样,我希望得到:
Hello
World
相反,我看到了:
Hello
World
World
我理解这是因为 A 类中的原始代码调用了 self.f(),它找到了 B.self。
问题:让“super(B, self).f()”把self当作类A,递归调用A.f(),然后返回B.f( ) 打印“世界?”
谢谢。
【问题讨论】: