【发布时间】:2012-03-10 00:26:58
【问题描述】:
我有一些类似的代码
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)
程序将变得正常。这是为什么?谁能告诉我更常见的包装函数的方法?
【问题讨论】:
-
通常你使用装饰器包装函数...
标签: python wrapper decorator lambda