События для Python
Наткнулся сегодня на довольно интересную библиотеку для python, которая добавляет возможность работать с событиями.
Эта библиотека позволит вам:
- создать один или несколько обработчиков для события;
- в любой момент исключить определенный обработчик из события;
- очистить список обработчиков для события;
- добавить в событие обработчик, который будет удален после первого вызова.
К сожалению, одноразовое добавление обработчика сейчас вызывает ошибку, но я надеюсь, что это скоро исправят. Я уже запостил баг.
И вот как это все работает:
#!/usr/bin/python
from pyee import Event_emitter
ee = Event_emitter()
@ee.on('event1')
def e1_handler():
print 'Event 1'
@ee.on('event1')
def e11_handler():
print 'Event 11'
def e12_handler():
print 'Event 12'
@ee.on('event2')
def e1_handler(prm):
print 'Event 2 (%s)' % prm
print '~~~ Call Event 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
ee.emit('event1')
print '\n~~~ Call Event 2 with parameter ~~~~~~~~~~~~~~~~'
ee.emit('event2', 'Test Parameter')
print '\n~~~ Call Event 1 with new handler ~~~~~~~~~~~~~~'
ee.on('event1', e12_handler)
ee.emit('event1')
print '\n~~~ Call Event 1 with removed last handler ~~~~~'
ee.remove_listener('event1', e12_handler)
ee.emit('event1')
Вывод , который мы увидим:
~~~ Call Event 1 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Event 1
Event 11
~~~ Call Event 2 with parameter ~~~~~~~~~~~~~~~~
Event 2 (Test Parameter)
~~~ Call Event 1 with new handler ~~~~~~~~~~~~~~
Event 1
Event 11
Event 12
~~~ Call Event 1 with removed last handler ~~~~~
Event 1
Event 11