包裝功能我有一些這樣的代碼的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