This code creates a singleton event dispatcher. It's called like this:
eventDispatcher = Event() eventDispatcher.on("event", handler) eventDispatcher.trigger("event", 5)
I'm wondering if this is "the python way," or if it could be improved? Especially the class, I'm not sure about creating a new object for every use of the dispatcher.
class Event():
events = {}
def on(self, event, func):
if event not in self.events.keys():
self.events[event] = []
self.events[event].append(func)
def trigger(self, event, *args, **namedArgs):
if event in self.events.keys():
for func in self.events[event]:
func(*args, **namedArgs)