blob: 94861b2d202471a64e5e6697e9e2645f362fa4dd (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
============================
Class-based event handlers
============================
A light-weight event-handler framework based on event classes is
provided by the ``zope.event.classhandler`` module.
Handlers are registered for event classes:
>>> import zope.event.classhandler
>>> class MyEvent(object):
... def __repr__(self):
... return self.__class__.__name__
>>> def handler1(event):
... print("handler1 %r" % event)
>>> zope.event.classhandler.handler(MyEvent, handler1)
Descriptor syntax:
>>> @zope.event.classhandler.handler(MyEvent)
... def handler2(event):
... print("handler2 %r" % event)
>>> class MySubEvent(MyEvent):
... pass
>>> @zope.event.classhandler.handler(MySubEvent)
... def handler3(event):
... print("handler3 %r" % event)
Subscribers are called in class method-resolution order, so only
new-style event classes are supported, and then by order of registry.
>>> import zope.event
>>> zope.event.notify(MySubEvent())
handler3 MySubEvent
handler1 MySubEvent
handler2 MySubEvent
|