屬性在運行時的動態(tài)替換富寿,叫做猴子補都唷(Monkey Patch)。
Monkey patch就是在運行時對已有的代碼進行修改桅打,達到hot patch的目的是嗜。
Eventlet中大量使用了該技巧愈案,以替換標
準庫中的組件,比如socket鹅搪。
猴子補丁的用法
運行時動態(tài)替換模塊的方法比如一個類有一個方法get-data 這個方法做一些外部查詢站绪,類里面很多其他方法都調(diào)用了他,
然而涩嚣,咋一個單元測試中崇众,不想依賴外部數(shù)據(jù),所以用你啞方法get_data航厚,只返回一些數(shù)據(jù)顷歌。
from someothrproduct.somemodule? importsomeclass
defspeak(self):
return"ook ook eee eee eee!"
SomeClass.speak = speak
很多代碼用到importjson,發(fā)現(xiàn)ujson性能高,如果把每個文件的importjson改成importujsonasjson 成本高或者是測
試一下ujson替換json是否符合
import json
import ujson
def monkey_patch_json():
json._name_ ="ujson"jsonjson.loads = ujson.loads?
?monkey_patch_json()
常見問題