bislang habe ich nach verschiedenen Ereignissen einfach Instanzen von
Code: Alles auswählen
class Event(object):
#irgendwann mal von BlackJack bekommen...
def __init__(self):
self.callbacks = set()
def __call__(self, *args, **kwargs):
for callback in self.callbacks:
callback(*args, **kwargs)
def add(self, listener):
self.callbacks.add(listener)
def remove(self, listener):
self.callbacks.remove(listener)
Ich habe mir daher überlegt, 'Event()' folgendermaßen umzubauen:
1. Ein potentieller Event wird angemeldet, z. B. 'APP_CHANGE' und mit callback(s) verbunden.
2. 'Event()' erhält eine Methode 'trigger', die ich dann an verschiedenste Exemplare weitergebe.
3. Wird z. B. in der Klasse 'Appointment()' ein Termineintrag geändert, wird über 'trigger' samt Parameter 'APP_CHANGE' die/der dazugehörige(n) callback(s) aufgerufen.
Code: Alles auswählen
class Event(object):
def __init__(self):
self.events = {}
def new_(self, name, listener):
self.events[name] = set([listener])
def add(self, name, listener):
self.events[name].add(listener)
def remove(self, name, listener):
self.events[name].remove(listener)
def trigger(self, name, *args, **kwargs):
for callback in self.events[name]:
callback(*args, **kwargs)