__handlerじゃなくて_handlerなのが味噌ですね。前者だと継承で上書きできません。
htmllibとかcmdのdo_xxxがどうしても好きになれないのです。
class CallNameProxy:
class Method:
def __init__(self, handler, name):
self._handler = handler
self.__name = name
def __getattr__(self, name):
# To Support nested call
return CallNameProxy.Method(self._handler, "%s.%s"%(self.__name, name))
def __call__(self, *args, **kw):
return self._handler(self.__name, args, kw)
def __repr__(self):
'''Need override for better printing'''
return ("")
__str__ = __repr__
def _handler(self, methodname, *args, **kw):
'''Must override to use'''
print 'override me!'
def __getattr__(self, name):
return CallNameProxy.Method(self._handler, name)
0 件のコメント:
コメントを投稿