最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python猴子補(bǔ)丁Monkey Patch用法實(shí)例解析

 更新時(shí)間:2020年03月23日 10:59:16   作者:python大師  
這篇文章主要介紹了Python猴子補(bǔ)丁Monkey Patch用法實(shí)例解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

屬性在運(yùn)行時(shí)的動(dòng)態(tài)替換,叫做猴子補(bǔ)?。∕onkey Patch)。

為什么叫猴子補(bǔ)丁

屬性的運(yùn)行時(shí)替換和猴子也沒(méi)什么關(guān)系,關(guān)于猴子補(bǔ)丁的由來(lái)網(wǎng)上查到兩種說(shuō)法:

1.這個(gè)詞原來(lái)為Guerrilla Patch,雜牌軍、游擊隊(duì),說(shuō)明這部分不是原裝的,在英文里guerilla發(fā)音和gorllia(猩猩)相似,再后來(lái)就寫(xiě)了monkey(猴子)。

2.還有一種解釋是說(shuō)由于這種方式將原來(lái)的代碼弄亂了(messing with it),在英文里叫monkeying about(頑皮的),所以叫做Monkey Patch。

猴子補(bǔ)丁的叫法有些莫名其妙,只要和“模塊運(yùn)行時(shí)替換的功能”對(duì)應(yīng)就行了。

猴子補(bǔ)丁的用法

1、運(yùn)行時(shí)動(dòng)態(tài)替換模塊的方法

stackoverflow上有兩個(gè)比較熱的例子,

consider a class that has a method get_data. This method does an
external lookup (on a database or web API, for example), and various
other methods in the class call it. However, in a unit test, you don't
want to depend on the external data source - so you dynamically
replace the get_data method with a stub that returns some fixed data.

假設(shè)一個(gè)類(lèi)有一個(gè)方法get_data。這個(gè)方法做一些外部查詢(xún)(如查詢(xún)數(shù)據(jù)庫(kù)或者Web API等),類(lèi)里面的很多其他方法都調(diào)用了它。然而,在一個(gè)單元測(cè)試中,你不想依賴(lài)外部數(shù)據(jù)源。所以你用啞方法態(tài)替換了這個(gè)get_data方法,啞方法只返回一些測(cè)試數(shù)據(jù)。

另一個(gè)例子引用了,Zope wiki上對(duì)Monkey Patch解釋?zhuān)?/p>

from SomeOtherProduct.SomeModule import SomeClass
def speak(self):
  return "ook ook eee eee eee!"
SomeClass.speak = speak

還有一個(gè)比較實(shí)用的例子,很多代碼用到 import json,后來(lái)發(fā)現(xiàn)ujson性能更高,如果覺(jué)得把每個(gè)文件的import json 改成 import ujson as json成本較高,或者說(shuō)想測(cè)試一下用ujson替換json是否符合預(yù)期,只需要在入口加上:

import json
import ujson
def monkey_patch_json():
  json.__name__ = 'ujson'
  json.dumps = ujson.dumps
  json.loads = ujson.loads
monkey_patch_json()

2、運(yùn)行時(shí)動(dòng)態(tài)增加模塊的方法

這種場(chǎng)景也比較多,比如我們引用團(tuán)隊(duì)通用庫(kù)里的一個(gè)模塊,又想豐富模塊的功能,除了繼承之外也可以考慮用Monkey Patch。

個(gè)人感覺(jué)Monkey Patch帶了便利的同時(shí)也有搞亂源代碼優(yōu)雅的風(fēng)險(xiǎn)。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • python?使用ctypes調(diào)用C/C++?dll詳情

    python?使用ctypes調(diào)用C/C++?dll詳情

    這篇文章主要介紹了python?使用ctypes調(diào)用C/C++?dll詳情,文章首先通過(guò)導(dǎo)入ctypes模塊,加載C/C++?dll到python進(jìn)程空間展開(kāi)主題相關(guān)內(nèi)容,需要的小伙伴可以參考一下
    2022-04-04
  • 將tf.batch_matmul替換成tf.matmul的實(shí)現(xiàn)

    將tf.batch_matmul替換成tf.matmul的實(shí)現(xiàn)

    這篇文章主要介紹了將tf.batch_matmul替換成tf.matmul的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-06-06
  • python 如何利用argparse解析命令行參數(shù)

    python 如何利用argparse解析命令行參數(shù)

    這篇文章主要介紹了python 利用argparse解析命令行參數(shù)的步驟,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • python thrift 實(shí)現(xiàn) 單端口多服務(wù)的過(guò)程

    python thrift 實(shí)現(xiàn) 單端口多服務(wù)的過(guò)程

    這篇文章主要介紹了python thrift 實(shí)現(xiàn) 單端口多服務(wù)的過(guò)程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • python中使用matplotlib繪制熱力圖

    python中使用matplotlib繪制熱力圖

    熱力圖,是一種通過(guò)對(duì)色塊著色來(lái)顯示數(shù)據(jù)的統(tǒng)計(jì)圖表,它通過(guò)使用顏色編碼來(lái)表示數(shù)據(jù)的值,并在二維平面上呈現(xiàn)出來(lái),本文就給大家介紹一下python使用matplotlib繪制熱力圖的方法,需要的朋友可以參考下
    2023-08-08
  • Tensorflow分類(lèi)器項(xiàng)目自定義數(shù)據(jù)讀入的實(shí)現(xiàn)

    Tensorflow分類(lèi)器項(xiàng)目自定義數(shù)據(jù)讀入的實(shí)現(xiàn)

    這篇文章主要介紹了Tensorflow分類(lèi)器項(xiàng)目自定義數(shù)據(jù)讀入的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python素?cái)?shù)檢測(cè)的方法

    Python素?cái)?shù)檢測(cè)的方法

    這篇文章主要介紹了Python素?cái)?shù)檢測(cè)的方法,實(shí)例分析了Python素?cái)?shù)檢測(cè)的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • python關(guān)閉windows進(jìn)程的方法

    python關(guān)閉windows進(jìn)程的方法

    這篇文章主要介紹了python關(guān)閉windows進(jìn)程的方法,涉及Python調(diào)用系統(tǒng)命令操作windows進(jìn)程的技巧,需要的朋友可以參考下
    2015-04-04
  • python安裝pytorch方式

    python安裝pytorch方式

    這篇文章主要介紹了python安裝pytorch方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • pytorch 歸一化與反歸一化實(shí)例

    pytorch 歸一化與反歸一化實(shí)例

    今天小編就為大家分享一篇pytorch 歸一化與反歸一化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12

最新評(píng)論

乌苏市| 余庆县| 凉城县| 梓潼县| 伊吾县| 辽阳市| 仲巴县| 清镇市| 江津市| 宁阳县| 逊克县| 融水| 长垣县| 灌云县| 湾仔区| 泾川县| 广南县| 合肥市| 湖口县| 遵化市| 浦城县| 永济市| 安阳市| 尤溪县| 红原县| 武邑县| 三明市| 微山县| 通海县| 寿阳县| 枣庄市| 梁山县| 南乐县| 信宜市| 荥经县| 赫章县| 拉萨市| 丰城市| 建平县| 黔南| 紫阳县|