import time
classLazyPerson(object):def__init__(self, name):
self.name = name
self.watch_tv_func =None# 目标挂载点
self.have_dinner_func =Nonedefget_up(self):print("%s get up at:%s"%(self.name, time.time()))defgo_to_sleep(self):print("%s go to sleep at:%s"%(self.name, time.time()))defregister_tv_hook(self, watch_tv_func):# 挂接
self.watch_tv_func = watch_tv_func
defregister_dinner_hook(self, have_dinner_func):
self.have_dinner_func = have_dinner_func
defenjoy_a_lazy_day(self):
self.get_up()
time.sleep(2)# watch tv --> check the watch_tv_func(hooked or unhooked) --> hookedif self.watch_tv_func isnotNone:
self.watch_tv_func(self.name)else:# unhookedprint("no tv to watch")
time.sleep(2)# have dinner --> check the have_dinner_func(hooked or unhooked) --> hookedif self.have_dinner_func isnotNone:
self.have_dinner_func(self.name)else:# unhookedprint("nothing to eat at dinner")
time.sleep(2)
self.go_to_sleep()defwatch_daydayup(name):# hook函数print("%s : The program ---day day up--- is funny!!!"% name)defwatch_happyfamily(name):print("%s : The program ---happy family--- is boring!!!"% name)defeat_meat(name):print("%s : The meat is nice!!!"% name)defeat_hamburger(name):print("%s : The hamburger is not so bad!!!"% name)deftest():
lazy_tom = LazyPerson("Tom")
lazy_jerry = LazyPerson("Jerry")# register hook
lazy_tom.register_tv_hook(watch_daydayup)
lazy_tom.register_dinner_hook(eat_meat)
lazy_jerry.register_tv_hook(watch_happyfamily)
lazy_jerry.register_dinner_hook(eat_hamburger)# enjoy a day
lazy_tom.enjoy_a_lazy_day()
lazy_jerry.enjoy_a_lazy_day()
test()