带修饰符的事件处理程序

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有了一个值。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何从用户输入中找到最大值和最小值?(while循环)   java数据库资源异常   java hibernate查询速度太慢,是否忽略了延迟加载条件?   不带花括号的java IfElse控制流   nextInt()中十进制数输入的java检查   java根据REST中的资源类型发送不同的响应主体   JAVAutil。扫描器Java系统。争论中   对于单个条目,java XSLT到数组的转换失败   java将txt文档预处理为以字符串为键、整数ArrayList为值的hashmap   java获取泛型数组类类型的简单方法?   雅加达ee使用Fast Purge Open API通过java代码清除akamai中的缓存URL   java在OpenNLP中使用parseLine解析后,如何获得没有空格的名词短语作为输入句子?   设置与my GUI的自动交互之间的延迟(Java Swing)