温馨提示×

python怎么用hook函数

养鱼的猫咪
329
2021-03-08 17:30:50
栏目: 编程语言

python怎么用hook函数

在python中使用hook函数,具体方法如下:

import time

class LazyPerson(object):

def __init__(self, name):

self.name = name

self.watch_tv_func = None

self.have_dinner_func = None

def get_up(self):

print("%s get up at:%s" % (self.name, time.time()))

def go_to_sleep(self):

print("%s go to sleep at:%s" % (self.name, time.time()))

def register_tv_hook(self, watch_tv_func):

self.watch_tv_func = watch_tv_func

def register_dinner_hook(self, have_dinner_func):

self.have_dinner_func = have_dinner_func

def enjoy_a_lazy_day(self):

self.get_up()

time.sleep(3)

if self.watch_tv_func is not None:

self.watch_tv_func(self.name)

else:

print("no tv to watch")

time.sleep(3)

if self.have_dinner_func is not None:

self.have_dinner_func(self.name)

else:

print("nothing to eat at dinner")

time.sleep(3)

self.go_to_sleep()

def watch_daydayup(name):

print("%s : The program ---day day up--- is funny!!!" % name)

def watch_happyfamily(name):

print("%s : The program ---happy family--- is boring!!!" % name)

def eat_meat(name):

print("%s : The meat is nice!!!" % name)

def eat_hamburger(name):

print("%s : The hamburger is not so bad!!!" % name)

if __name__ == "__main__":

lazy_tom = LazyPerson("Tom")

lazy_jerry = LazyPerson("Jerry")

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)

lazy_tom.enjoy_a_lazy_day()

lazy_jerry.enjoy_a_lazy_day()

0