带修饰符的事件处理程序
decev的Python项目详细描述
DECEV(dec演说家events)作者@dantechguy
一个用于事件处理的小库,它使用装饰器进行事件订阅
使用
1。创建EventHandler对象和事件
importdecev# pass list of event namesevents=decev.EventHandler(['firstEvent','event_two','LAST_EVENT'])
2。向事件添加函数
Event函数不能有任何参数
^{pr2}$3。向事件添加方法
方法只能有self
参数
classMyClass:def__init__(self):# this must be run for methods to be subscribedevents.subscribe_tagged_methods(self)# add myMethod to LAST_EVENT@events.LAST_EVENTdefmyMethod(self):print('myMethod')# create instance of class myObject=MyClass()
4。运行事件
events.run('firstEvent')print()events.run('event_two')print()events.run('LAST_EVENT')
这就产生了:
> py main.py
myOtherFunction
myFunction
myOtherFunction
myMethod
工作原理
任何使用zero参数添加的函数都被假定为常规函数,并立即订阅事件。在
任何使用one参数添加的函数都被假定为方法(参数是self
),并用相应的事件标记。稍后,当调用subscribe_tagged_methods
时,所有标记的方法都将订阅到该事件。在
我们标记然后订阅方法的原因是,当函数通常被订阅时,self
没有值(没有实例),因此方法是unbound。只有在创建了一个实例之后,我们在其__init__
中运行subscribe_tagged_methods
,以便成功订阅所有方法,因为self
有了一个值。在
- 项目
标签: