classObserver:def__init__(self, strname, strsub):
self.name = strname
self.sub = strsub
defupdate(self):passclassStockObserver(Observer):# no need to rewrite __init__()defupdate(self):print("%s:%s,stop watching Stock and go on work!"%(self.name, self.sub.action))classNBAObserver(Observer):defupdate(self):print("%s:%s,stop watching NBA and go on work!"%(self.name, self.sub.action))classSecretaryBase:def__init__(self):
self.observers =[]defattach(self, new_observer):passdefnotify(self):passclassSecretary(SecretaryBase):defattach(self, new_observer):
self.observers.append(new_observer)defnotify(self):for p in self.observers:
p.update()if __name__ =="__main__":
p = Secretary()
s1 = StockObserver("xh", p)
s2 = NBAObserver("wyt", p)
p.attach(s1)
p.attach(s2)
p.action ="WARNING:BOSS "
p.notify()