La farandole des différents systèmes à événements qui sont mentionnés dans les réponses ici:
La plupart de style de base de système d'événements est le "sac de méthodes de gestionnaire", qui est une simple application du pattern observer. Fondamentalement, les méthodes de gestionnaire d' (callables) sont stockées dans un tableau et chacune est appelée lorsque l'événement "feux".
-
zope.l'événement montre le squelette de la façon dont cela fonctionne (voir Lennart réponse). Remarque: cet exemple n'a même pas le soutien gestionnaire d'arguments.
-
LongPoke "callable liste" la mise en œuvre montre qu'un tel événement système peut être mis en œuvre très minimalistically subclassing
list
-
spassig de EventHook (Michael Foord de l'Événement Pattern) est une mise en œuvre directe.
-
Josip est Évalué les Leçons des Événements de la classe de base est le même, mais utilise un set() au lieu d'une liste pour stocker le sac, et implémente
__call__
qui sont à la fois raisonnable ajouts.
-
PyNotify concept est similaire et fournit également d'autres notions de variables et de modalités (variable changé événement").
-
axel est en fait un sac de gestionnaires avec plus de fonctionnalités liées à l'enfilage, erreur de manipulation, ...
L'inconvénient de ces systèmes est que vous ne pouvez enregistrer les gestionnaires sur l'Événement réel de l'objet (ou les gestionnaires de la liste).
Ainsi, au moment de l'enregistrement de l'événement a déjà besoin d'exister.
C'est pourquoi le deuxième style de systèmes à événements: la publication-souscription modèle.
Ici, les gestionnaires ne vous inscrivez pas sur un objet événement (ou gestionnaire de liste), mais sur un répartiteur central. Aussi les auteurs de la notification de parler à l'expéditeur. Ce qu'il faut écouter, ou de quoi publier est déterminée par "signal", qui n'est rien de plus qu'un nom (chaîne de caractères).
-
PyPubSub , à première vue, semble être assez simple; apparemment ne supporte pas encore Python3
-
PyDispatcher semble souligner la flexibilité en ce qui concerne plusieurs-à-plusieurs publications etc.
- (et Qt sur les signaux et les slots sont disponibles à partir de PyQt ou PySide)