包装功能我有一些这样的代码的Python:通过拉姆达
class EventHandler:
def handle(self, event):
pass
def wrap_handler(handler):
def log_event(proc, e):
print e
proc(e)
handler.handle = lambda e: log_event(handler.handle, e)
handler = EventHandler()
wrap_handler(handler)
handler.handle('event')
将结束了无限递归。同时将wrap_handler
更改为
def wrap_handler(handler):
def log_event(proc, e):
print e
proc(e)
# handler.handle = lambda e: log_event(handler.handle, e)
handle_func = handler.handle
handler.handle = lambda e: log_event(handle_func, e)
程序将变为OK。这是为什么?谁能告诉我更常用的方法来包装功能?
通常你使用装饰器包装函数... – Gandaro 2012-02-19 09:17:35