Newer
Older
"""
Base class to provide functionality to notify updates to other objects
"""
def __init__(self):
self.subscribers = dict()
def subscribe(self, who, callback=None):
"""
Add a suscriber to the current publisher
:param who: subscriber to add
:type who: object
:param callback: method to execute when publisher updates
:type callback: callable
"""
if callback is None:
callback = getattr(who, 'update')
self.subscribers[who] = callback
def unsubscribe(self, who):
"""
Removes a suscriber from the current publisher
:param who: suscriber to remove
:type who: object
"""
del self.subscribers[who]
def dispatch(self, *args):
"""
Notify update to all the suscribers
:param args: arguments to pass
"""
for subscriber, callback in self.subscribers.items():