publisher.py 433 Bytes
Newer Older
class Publisher(object):
    def __init__(self):
        self.subscribers = dict()

    def subscribe(self, who, callback=None):
        if callback is None:
            callback = getattr(who, 'update')
        self.subscribers[who] = callback

    def unsubscribe(self, who):
        del self.subscribers[who]

    def dispatch(self, *args):
        for subscriber, callback in self.subscribers.items():
            callback(*args)