【发布时间】:2014-09-05 19:16:55
【问题描述】:
我需要将几个方法作为回调传递,它们不采用self 参数。这是我当前代码的样子:
def _do_callback(callback, log, *args):
try:
# some common code
callback(*args)
except:
log.error('XX')
class Foo(object):
def __init__(self):
self.log = Log('Foo')
self.cb1_wrapper = lambda x: _do_callback(self.cb1, self.log, x) # I need a function taking one parameter
self.cb2_wrapper = lambda x: _do_callback(self.cb2, self.log, x)
def cb1(self, x):
# some code accessing self
def cb2(self, x):
# some code accessing self
def register_callbacks(self):
register('1', self.cb1_wrapper)
register('2', self.cb2_wrapper)
是否可以编写一些装饰器应用于cb1 和cb2,以便能够将结果传递到当前采用self.cb1_wrapper 的代码中?
(我知道标题不太理想,请随意编辑)
【问题讨论】:
-
您的意思是要使用装饰器将方法注册为回调?你不能为此使用装饰器,因为应用装饰器时没有实例。
-
@MartijnPieters 很好,实际上我想简化代码。如果您不考虑实现,使用装饰器似乎是正确的,所以我认为也许有一个解决方案。
标签: python class decorator python-decorators