Skip to content

Instantly share code, notes, and snippets.

@StanGenchev
Created December 15, 2019 14:26
Show Gist options
  • Save StanGenchev/0f93d3c835e6e21e7f20c4eda132c67b to your computer and use it in GitHub Desktop.
Save StanGenchev/0f93d3c835e6e21e7f20c4eda132c67b to your computer and use it in GitHub Desktop.
My 'Event Dispatcher' implementation in python.
class EventDispatcher:
def __init__(self):
self.__eventhandlers = {}
def add_event(self, event, handler):
self.__eventhandlers[event] = handler
def remove_event(self, event):
del self.__eventhandlers[event]
def call_event(self, event, *args, **kwargs):
self.__eventhandlers[event](*args, **kwargs)
class MainClass:
def __init__(self):
self.secondary = SecondaryClass()
self.event_dispatcher = self.secondary.get_event_dispatcher()
self.event_dispatcher.add_event("show_text", self.show_text)
def show_text(self, text):
print(text)
def trigger(self):
self.secondary.simulate_event()
class SecondaryClass:
def __init__(self):
self.on_event = EventDispatcher()
def get_event_dispatcher(self):
return self.on_event
def simulate_event(self):
self.on_event.call_event("show_text", "some text")
main = MainClass()
main.trigger()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment