美文网首页
python_理解篇_钩子方法的理解

python_理解篇_钩子方法的理解

作者: 金鱼座 | 来源:发表于2019-08-22 17:59 被阅读0次

大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油!

钩子方法,是一个比较奇怪的东西, 他实际上不做任何业务操作,主要用于后期注册函数然后引用

举个爪子

#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""
@File  : hook_jack.py
@Author: JACK
@Date  : 2019/8/22
@Des   :
"""

class HookMethodClass(object):

    def __init__(self):
        self.hook_method = None


    def register_method_hook(self, method):
        self.hook_method = method

    def play(self):
        if self.hook_method == None:
            print("未接受到注册方法")
        else:
            print("接受到了方法")
            self.hook_method()


def hooked_method():
    print("我是一个业务方法,需要注册使用")


if __name__ == "__main__":
    pass
    hooka = 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 = None
  def reg_book(self, book):
    self.read_book = book

  def read():
    if self.read_book  is not None:
        self.read_book()
    else:
        pass
def book_A():
  pass

def book_B():
  pass

可以了, 如上图, 当然案例可能并没有充分体现出钩子的更加综合的体验,但是从理解来说,我们知道,钩子就等于是将两个方法通过一种关联方法,实现相关的引用,就想案例中的reg_book,通过这种关联引用,来达到read中的只需要判断是否有方法,有就执行,没有就不执行,而不用去人为if判断是A,B,然后对应去执行bookA和BookB

相关文章

  • python_理解篇_钩子方法的理解

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! 钩...

  • python_理解篇_理解类继承

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! 类...

  • JVM-Sandbox笔记 -- 事件监听的设计

    导读 理解 注入式增强 ; 结合官网介绍 ->沙箱事件介绍 我们的watch方法 会增强代码(注入钩子方法);钩子...

  • python_理解篇_闭包咋理解?

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! 前...

  • python_装饰器篇(基础理解)

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! p...

  • (转)shouldComponentUpdate 钩子理解

    # [react】利用shouldComponentUpdate钩子函数优化react性能以及引入immutabl...

  • 自学Java第137天

    学了vue的生命周期钩子,以及指令这个钩子,如何理解它呢?初步就可以将其理解成回调函数 我目前对于vue的各种学习...

  • Python_函数

    Python_函数 在我们有面向对象思想后,会更加容易的理解。所以函数的章节内容会较为精简。 调用函数 Pytho...

  • python_理解篇_yield的个人学习

    大家好,我是金鱼座,一个走在测试领域这片蓝海中, 蹉跎前行的技术渣渣,唯有一直走下去,也许能改变点什么,加油! y...

  • 钩子函数初步理解

    1.网上也看了一些文章,对于钩子函数,理解为:一条完整的生产线上,会提供很多挂钩,钩子函数可以挂在这些挂钩上。当生...

网友评论

      本文标题:python_理解篇_钩子方法的理解

      本文链接:https://www.haomeiwen.com/subject/psrosctx.html