我写了一个python的测试代码,例如:
class Parent(object):
@classmethod
def dispatch(klass):
print 'klass = %s' % klass
return klass().__dispatch()
def __dispatch(self):
print 'This Parent.__dispatch()'
print self
class Child(Parent):
def __dispatch(self):
print 'This Child.__dispatch()'
print self
if __name__=='__main__':
print 'Calling Parent.dispatch() ...\n'
Parent.dispatch()
print ''
print 'Calling Child.dispatch() ...\n'
Child.dispatch()
print '\n-END'
输出是:
Calling Parent.dispatch() ...
klass = <class '__main__.Parent'>
This Parent.__dispatch()
<__main__.Parent object at 0x0000000002D3A2E8>
Calling Child.dispatch() ...
klass = <class '__main__.Child'>
This Parent.__dispatch()
<__main__.Child object at 0x0000000002D3A2E8>
-END
为什么不调用 Child 类的覆盖方法 '__dispatch(self)' 很奇怪。
有人可以解释一下吗?
谢谢你。