class Observable(object): def __init__(self): self.callbacks = [] def register(self, callback): if callback not in self.callbacks: self.callbacks.append(callback) class Observer(list): def callback(self, *args): pass def observe(self, observable): observable.register(self.callback) observable = Observable() observer1 = Observer() observer1.observe(observable) observer2 = Observer() observer2.observe(observable) print observable.callbacks