猴子补丁

属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。

Monkey patch就是在运行时对已有的代码进行修改,达到hot patch的目的。

Eventlet中大量使用了该技巧,以替换标

准库中的组件,比如socket。

猴子补丁的用法

运行时动态替换模块的方法比如一个类有一个方法get-data 这个方法做一些外部查询,类里面很多其他方法都调用了他,

然而,咋一个单元测试中,不想依赖外部数据,所以用你哑方法get_data,只返回一些数据。

from someothrproduct.somemodule  importsomeclass

defspeak(self):

return"ook ook eee eee eee!"

SomeClass.speak = speak

很多代码用到importjson,发现ujson性能高,如果把每个文件的importjson改成importujsonasjson 成本高或者是测

试一下ujson替换json是否符合

import json

import ujson

def monkey_patch_json():

json._name_ ="ujson"jsonjson.loads = ujson.loads 

 monkey_patch_json()

常见问题

你可能感兴趣的:(猴子补丁)