Python Implementation: Observer Design Pattern