【发布时间】:2011-07-08 06:43:15
【问题描述】:
Python 的原作者 Guido 以这种方式解释方法覆盖:“派生类可能会覆盖其基类的方法。因为方法在调用同一对象的其他方法时没有特殊权限,因此基类的方法可以调用在同一个基类中定义的另一个方法,实际上可能最终调用覆盖它的派生类的方法。(对于 C++ 程序员:Python 中的所有方法实际上都是虚拟的。)“如果这对你没有意义(这让我很困惑),请随意忽略它。我只是想我会把它传下去。
我试图找出一个例子:一个基类的方法调用同一个基类中定义的另一个方法,实际上可能最终调用一个覆盖它的派生类的方法 em>
class A:
def foo(self): print 'A.foo'
def bar(self): self.foo()
class B(A):
def foo(self): print 'B.foo'
if __name__ == '__main__':
a = A()
a.bar() # echoes A.foo
b = B()
b.bar() # echoes B.foo
...但这两个似乎都很明显。
我是否遗漏了引文中暗示的内容?
更新
修改了原代码中调用a.foo()(而不是a.bar())和b.foo()(而不是b.bar())的错字
【问题讨论】:
-
获取父母
b.__class__.__mro__[1].hi(A())的肮脏黑客 -
@Jakob:为什么不
super? -
@Eli 在 python2.6.6 上返回 NULL 吗? :S
标签: python