import EventObserver # class object MUST inherit Observer object if you use it within class class Room(Observer): def __init__(self): print("Room is ready.") Observer.__init__(self) # DON'T FORGET THIS # observer can be declared already in class init method with following line # this.observe('someone sneezed', this.someone_sneezed) def someone_arrived(self, who): print("{} has arrived!".format(who)) def someone_sneezed(self, who): print("{} has just sneezed!".format(who)) # Observe for specific event room = Room() room.observe('arrived', room.someone_arrived) room.observe('sneezed', room.someone_arrived) # Fire some events Event('left', 'John') # no events are attached to event "someone left" Event('arrived', 'Lenard') # will output "Lenard has arrived!" Event('sneezed', 'Jenny') # will output "Jenny has just sneezed!" # Remove known event room.forget('arrived') # no events based on 'someone arrived' will be fired '''