通过decorator实现观察者模式
obsub的Python项目详细描述
通过 装饰工。
说明
这是基于thread on stackoverflow (jason orendorff的c like事件的例子),所以我不接受任何 这主意值得称赞。我只是制作了一个带有文档和 测试出来,因为我需要它在一个更大的项目。这是相当的 汉迪和我已经在一些项目中使用了它,这需要一些 类似于事件处理。
因此它是licensed as CC0,所以基本上 在法律允许的范围内做你想做的事。
安装
obsub在pypi上可用,因此您可以使用 pip install obsub或者使用setup.py手动完成 任何python包。
用法
来自obsub模块的eventdecorator使用如下:
fromobsubimportevent# Define a class with an eventclassSubject(object):@eventdefon_stuff(self,arg):print('Stuff {} happens'.format(arg))# Now define an event handler, the observerdefhandler(subject,arg):print('Stuff {} is handled'.format(arg))# Wire everything up...sub=Subject()sub.on_stuff+=handler# And try it!sub.on_stuff('foo')
现在您应该同时从事件本身和 事件处理函数,如下所示:
Stuff foo happens Stuff foo is handled
连续积分
为了好玩,Travis CI 用于连续集成。只要一切都好, 下面的按钮应该是绿色和闪亮的!
持续的集成确保了我们的测试运行在 平台:
- Python2.6,2.7
- python 3.2、3.3
- 皮比
它也可以在Python2.5上工作,但是不能用这个自动测试 版本。
我们还使用工作服跟踪测试的覆盖范围。io
使用coverage生成本地 覆盖率报告如下:
coverage run setup.py nosetests
注意:在某些平台(如ubuntu)上,可执行文件被称为 python-coverage。
贡献和反馈
obsub是在github上开发的。
如果你对这个软件有任何疑问或遇到错误,欢迎 打开new issue on github。
如果出于某种原因不想使用github,可以选择 发送电子邮件给我们中的一个:
如果您认为合适,可以随意贡献补丁作为拉取请求。努力成为 尽可能符合PEP8指南并测试所有内容。 否则,提交消息应该以 一致性。除非您的修改非常简单,否则还需要添加一条消息 身体对你的承诺。
学分
感谢Jason Orendorff关于StackOverflow的想法。我也想 感谢@coldfix和@moreweard的贡献和反馈。
更改日志
v0.2
从用户的角度看函数签名和 错误修复可能是最相关的。python 2.5不再由 持续集成,尽管我们试图避免不必要的更改 打破向后兼容。
此外,还有相当多的变化主要涉及 开发商。
- 函数签名现在由事件装饰器正确保存。这个 只有Python才是真的。在python2上不支持默认值 参数,当前
- 对内存处理及其测试的一些修复。这包括一个更通用的 在测试套件中处理垃圾收集过程以使其 把派比也传下去。
- 从一个很长的doctest到更集中的测试套件的大规模重构 单元测试。
- 文档已从标记转换为RestructuredText,因为 它与pypi和github都兼容。
- 各种改进和一些文件的精简。
- 修复许可证中的包名称。
- 持续集成现在包括Coveralls.io支持。
- 对Python2.5的支持不再使用Travis CI进行测试,因为它们已经 已放弃对此版本的支持。
v0.1.1
- 将“全部”属性添加到模块
- 修复几个文档问题
v0.1
初始版本