Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 16, 2006 17:34:54

redbaron
От:
Зарегистрирован: 2006-11-16
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать "слушателей" событий?

Занялся изучением питона, и возникла такая проблема: одна программа генерирует события, а неограниченное число других (ввиде плагинов или просто в виде отдельных модулей) должны слушать эти события (не все , а только сами которые выберут) и реагировать на них. Как это реализовать? в C# есть delegate и event, а тут как провернуть такой трюк?

Для наглядности предсатвлю все упрощенно:

import math
for i in range(100):
if fmod(i,2)==0:
//событие один. тот кто его слушает должен получить значение i
elif fmod(i,5)==0:
//событие два. тот кто его слушает должен получить номер итерации
elif fmod(i,10)==0:
//событие три. тот кто его слушает не должен ничего получать, просто должен знать что событие случилось
задача: заранее неизвестное количество модулей должны “подписаться” на заранее неизвестное количество событий и когда эти события происходят данные модули должны быть оповещены и им должны быть переданы соотв. данные. Причем те модули которые “подписаны” на событие 2 и 3 при некотором значении i должны быть “оповещены” дважды - по разу на каждое событие.

Светлые умы, подскажите плиз как решить такую задачку.

Впринципе “заранее неизвостное количество” это громко сказано, меня вполне устроит если “подключение” таких модулей будет сведено к добавлению одной строки вызова в основную программу.



Офлайн

#2 Ноя. 16, 2006 17:41:44

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Как реализовать "слушателей" событий?

Офлайн

#3 Ноя. 17, 2006 05:25:13

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Офлайн

#4 Ноя. 21, 2006 18:50:19

dvs
От:
Зарегистрирован: 2006-05-22
Сообщения: 176
Репутация: +  3  -
Профиль   Отправить e-mail  

Как реализовать "слушателей" событий?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version