A package for event-driven paradigm
This class is runtime created and its purpose is to be inhereted by the event-driven target class. It has the following structure:
class Events: def _event1(...): # Implementation... @property def event1(self): return self._event1 @event1.setter def event1(self, value): self._event1 = EventManager.make_event(value) def _event2(...): # Implementation... @property def event2(self): return self._event1 @event2.setter def event1(self, value): self._event2 = EventManager.make_event(value) ...
This class builds the Events class, which must be inherited by the event-driven target class. Its implementation is omitted in this tutorial for it is not relevant for the package usage.
This function gets events names-docstring tuples as attributes, creates an EventManager instance and returns an Events class ready to be inherited.
events_class = event_driven( ('event1', '...'), ('event2', '...'), ('event3', '...'), ... )
class TargetClass(event_driven(('event1', '...'), ('event2', '...'))): __slots__ = 'baa', 'foo' def __init__(self): # Implementation... def foo_maker(self, value): self.baa = self.event2(baa) self.foo = self.event1(value, self.baa)
When an event is declared, it is created as None, so that nothing will happen during the execution of self.event2, nor self.event1(value, self.baa). Furthermore, even though None is not callable, when an event is None, it is simply not called, no exception is called.
target_instance = TargetClass() @target_instance.set_event1 def new_event1(self, *args): # Implementation... @target_instance.set_event2 def new_event2(self, baa): # Implementation...
Those lines would change event1 and event2 behaviour for target_instance. Although it is not a rule, it is undoubtedly a good habit to use docstring to events for the TargetClass implementation probably expects event1 and event2 to have specific arguments, or none.
Release history Release notifications | RSS feed
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.