Skip to content

Instantly share code, notes, and snippets.

@drhanlau
Last active May 27, 2018 18:17
Show Gist options
  • Save drhanlau/f630e026807ebffcfb72 to your computer and use it in GitHub Desktop.
Save drhanlau/f630e026807ebffcfb72 to your computer and use it in GitHub Desktop.
Observer
if __name__ == "__main__":
stock_watcher = Observable()
american_observer = AmericanStockMarket()
stock_watcher.register(american_observer)
stock_watcher.publish('KLSE Market Update', price='+0.5')
class Observable(object):
def __init__(self):
self.observers = []
def register(self, observer):
if not observer in self.observers:
self.observers.append(observer)
def unregister(self, observer):
if observer in self.observers:
self.observers.remove(observer)
def unregister_all(self):
if self.observers:
del self.observers[:]
def publish(self, *args, **kwargs):
for observer in self.observers:
observer.update(*args, **kwargs)
class Observer(object):
__metaclass__ = ABCMeta
@abstractmethod
def update(self, *args, **kwargs):
pass
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment