日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python hook_python_理解篇_钩子方法的理解

發布時間:2024/7/23 python 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python hook_python_理解篇_钩子方法的理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

大家好,我是金魚座,一個走在測試領域這片藍海中, 蹉跎前行的技術渣渣,唯有一直走下去,也許能改變點什么,加油!

鉤子方法,是一個比較奇怪的東西, 他實際上不做任何業務操作,主要用于后期注冊函數然后引用

舉個爪子

#!/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 hook_python_理解篇_钩子方法的理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。