跳转到主要内容

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 查看哈希值)

上传时间 源代码

由以下支持