将c eventhandler的优雅引入python

Events的Python项目详细描述


https://secure.travis-ci.org/pyeve/events.png?branch=master

C语言提供了一种声明、订阅和触发事件的简便方法。 从技术上讲,事件是回调函数(事件处理程序)可以 附加到-称为订阅事件的进程。这是 一个方便的包,它封装了核心到事件的订阅和事件 开火,感觉像是语言的“自然”部分。

>>> defsomething_changed(reason):... print"something changed because %s"%reason...>>> fromeventsimportEvents>>> events=Events()>>> events.on_change+=something_changed

多个回调函数可以订阅同一事件。当事件是 触发后,将按顺序调用所有附加的事件处理程序。为了启动这个活动, 在插槽上执行呼叫:

>>> events.on_change('it had to happen')'something changed because it had to happen'

默认情况下,事件不检查是否可以订阅和触发事件。 可以通过子类化事件并将其列出来预定义事件。试图 订阅或触发未定义的事件将引发EventsException。

>>> classMyEvents(Events):... __events__=('on_this','on_that',)>>> events=MyEvents()
# this will raise an EventsException as `on_change` is unknown to MyEvents:
>>> events.on_change+=something_changed

还可以通过将迭代器传递给构造函数来预定义单个事件实例的事件。

>>> events=Events(('on_this','on_that'))
# this will raise an EventsException as `on_change` is unknown to events:
>>> events.on_change+=something_changed

文档

完整的文档可在http://events.readthedocs.org

安装

事件在pypi上,因此您只需执行以下操作:

pip install events

测试

只需运行:

python setup.py test

或者在所有支持的Python:2.6、2.7、3.3、3.4、3.5和3.6的情况下使用tox测试包装。

许可证

事件是bsd许可的。有关详细信息,请参见LICENSE

归因

基于Zoran Isailovski的优秀配方,版权所有(c)2005。

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

推荐PyPI第三方库


热门话题
java如何在数据库中插入行时自动发送电子邮件?   从进程输出读取的Java问题   java质疑StyledDocument和JTextPane之间的关系,以及接口的正确使用   java错误getPlayer(args[0]);   java如何使Spring引导在重新打包的WAR中包含清单文件?   Java中的除法与模   java使用2d数组和JfreeChart制作散点图   java扩展SonarQube FindBugs插件和自定义FindBugs插件   javaspring:hibernate+ehcache   具有不正确的equals和HashCode实现的java HashMap   java Jaspersoft报告网。旧金山。jasperreports。发动机例外:net。旧金山。jasperreports。发动机填满JRepressionEvalException:计算表达式时出错   java如果输入与其变量不匹配,如何添加错误   在java中使用简单数组[]实现队列   无法启动上下文路径/hsx上的java FAIL应用程序