私は次のような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)'が呼び出されなかったのは非常に奇妙です。
誰かがこれについて説明できますか?
ありがとうございました。