我有一个@on_event
装饰器,它将函数注册为指定事件的回调函数:
@on_event('MY_EVENT')
def on_event_triggers(*a, **k):
print('Event triggered')
但是,我希望我的装饰者能够处理“全局”函数(如上所述)和类函数:
class MyModule(Module):
@on_event('MY_EVENT')
def on_event_triggered(self, *a, **k):
print('Event triggered in a method')
当然,self
参数将正确传递(并由我未在此处显示的某些代码确定)。但是,要实现这一点,我必须能够知道传递给我的装饰器的函数是方法还是全局函数。
我正在使用Python 3.3。
答案 0 :(得分:2)
你应该提供两个装饰器,一个用于自由函数,一个用于方法。没有简单或可靠的方法来找到装饰器内部的区别。对于编写代码的人来说,这是微不足道的。