泉州seo网站建设费用,百度不收录网站怎么办,wordpress商城必备软件,网站开发未按合同约定工期完工大家好#xff0c;我是金鱼座#xff0c;一个走在测试领域这片蓝海中#xff0c; 蹉跎前行的技术渣渣#xff0c;唯有一直走下去#xff0c;也许能改变点什么#xff0c;加油#xff01;钩子方法#xff0c;是一个比较奇怪的东西#xff0c; 他实际上不做任何业务操作…大家好我是金鱼座一个走在测试领域这片蓝海中 蹉跎前行的技术渣渣唯有一直走下去也许能改变点什么加油钩子方法是一个比较奇怪的东西 他实际上不做任何业务操作主要用于后期注册函数然后引用举个爪子#!/usr/bin/python3# -*- coding: utf-8 -*-File : hook_jack.pyAuthor: JACKDate : 2019/8/22Des :class HookMethodClass(object):def __init__(self):self.hook_method Nonedef register_method_hook(self, method):self.hook_method methoddef play(self):if self.hook_method None:print(未接受到注册方法)else:print(接受到了方法)self.hook_method()def hooked_method():print(我是一个业务方法需要注册使用)if __name__ __main__:passhooka HookMethodClass()hooka.register_method_hook(hooked_method)hooka.play()显示的结果result从上述对比中发现实际上钩子方法就是里面的register方法 这样的方式可以在一些特定的场景中灵活扩展类的对象操作方式例如A同学B同学都在看书一个在看语文一个在看英语中场景在日常的类设计中我们会设计如下结构class Student():def read():pass但是这种方式就会有一个问题就是我只有读的对象行为但是我没有读的目标展示针对这种情况我们实际上就可以考虑使用钩子方法class Student_Hook():def __init__(self, read_book):self.read_book Nonedef reg_book(self, book):self.read_book bookdef read():if self.read_book is not None:self.read_book()else:passdef book_A():passdef book_B():pass可以了 如上图 当然案例可能并没有充分体现出钩子的更加综合的体验但是从理解来说我们知道钩子就等于是将两个方法通过一种关联方法实现相关的引用就想案例中的reg_book,通过这种关联引用来达到read中的只需要判断是否有方法有就执行没有就不执行而不用去人为if判断是AB然后对应去执行bookA和BookB