2008年2月27日水曜日

CallNameProxy

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
っても、xmlrpclibのServerProxyから抽出しただけなんだけど。
__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 件のコメント: