Pyjon.Events是一个易于使用的事件调度器元类
项目描述
这是什么?
Pyjon.Events是一个易于使用的对象事件调度器元类:只需将其添加到任何类中,就可以添加事件监听器和调度事件。
您可以在添加监听器时定义传递给监听器的参数。您还可以定义在发出事件时传递给监听器的参数。
示例
在我们的示例中,我们将定义一个人员类。只需导入模块,并将其添加到您的类中(Python2示例)
from pyjon.events import EventDispatcher class Person(object): __metaclass__ = EventDispatcher def __init__(self, name): # just a sample initialization, you can do whatever you want, of course. self.name = name def run(self, meters=1): print "I'm running for %d meters !" % meters self.emit_event('ran', meters) self.emit_event('moved', meters=meters) def walk(self, meters=1): print "I'm walking for %d meters !" % meters self.emit_event('walked', meters) self.emit_event('moved', meters=meters) def sleep(self): print "sleeping..." self.emit_event('sleeping') time.sleep(5) self.emit_event('sleeped') print "Wow... had a good night !"
对于Python3,只需替换为以下内容
class Person(object): __metaclass__ = EventDispatcher
with this
class Person(metaclass = EventDispatcher):
现在,让我们实例化我们的类并订阅事件
>>> henry = Person('henry') >>> def handle_movement(meters=None): ... print "he moved for %d meters" % meters >>> def handle_person_movement(who, meters=None): ... print "%s moved for %d meters" % (who, meters) >>> henry.add_listener('moved', handle_movement) >>> henry.add_listener('moved', handle_person_movement, "henry") >>> henry.walk(5) I'm walking for 5 meters ! he moved for 5 meters henry moved for 5 meters >>> def handle_advanced_movement(meters, who, movement_type): ... print "%s %s for %d meters" % (who, movement_type, meters) >>> henry.add_listener('walked', handle_advanced_movement, "henry", "walked") >>> henry.add_listener('ran', handle_advanced_movement, "henry", "ran") >>> henry.walk(5) I'm walking for 5 meters ! henry walked for 5 meters he moved for 5 meters henry moved for 5 meters >>> henry.run(5) I'm running for 5 meters ! henry ran for 5 meters he moved for 5 meters henry moved for 5 meters
这很简单,不是吗?
变更日志
1.0 - 未发布
初始发布
1.1 - 第一次公开发布
支持带有关键字参数的事件
添加文档
1.1.1 - 错误修复发布
MANIFEST.in修复
文档修复
1.2 - 兼容Python 3!
现在与Python 3兼容!
项目详情
下载文件
下载您平台对应的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码发行版
pyjon.events-1.2.tar.gz (3.8 kB 查看哈希值)
构建发行版
pyjon.events-1.2-py3.4.egg (6.6 kB 查看哈希值)
pyjon.events-1.2-py2.7.egg (6.3 kB 查看哈希值)
关闭
pyjon.events-1.2.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 190f6085bdc4f1b9ea78282a5b93a5afae6bc81cc87b8885c27c27712a361d31 |
|
MD5 | 9d137a9d1c899594e8215f07e7e6f1c9 |
|
BLAKE2b-256 | 3b5c9119de43a3bd65cd52970994eb74e2d7cb4df1c72836930e75c0cfed0b18 |
关闭
pyjon.events-1.2-py3.4.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c82a5c52cd2bfeb2b79aaee1f417efd670087f3a0aaf53de970cb8b95bc8dc47 |
|
MD5 | 316de6c48198ebd9bb478936fd73d8d4 |
|
BLAKE2b-256 | 264caee0a035747a53addd3331efcac8d9bc5525c9cd019cf51283ceee37c5ec |
关闭
pyjon.events-1.2-py2.7.egg的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f8c20b3ca0b17c3448aaf29dcf3fb9e2baf6bf1d4d9c001e84549adc70cd1498 |
|
MD5 | f76d976ff0acc86583200908d79f2d7e |
|
BLAKE2b-256 | 4122570cc7003da280cdf324ae5d7bf2bcb55d59467fe35b29a2d3a829832b39 |