猴子补丁

属性在运行时的动态替换,叫做猴子补丁(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()

常见问题

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。猴子补丁的叫法有些莫名其妙,只要和“模块运行时替...
    多喝烫水_阅读 341评论 0 0
  • 写了一段时间java切回写python偶尔会出现一些小麻烦,比如:在java中自定义对象变成json串很简单,调用...
    8993c20c49db阅读 24,832评论 0 8
  • 属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。 为什么叫猴子补丁 属性的运行时替换和猴子也没什...
    cb9e58ff5a37阅读 8,073评论 0 3
  • 猴子补丁(Monkey Patch) 猴子补丁, 顾名思义...完全不知道是什么玩意有木有, 可能有些历史原因, ...
    cabbywang阅读 8,046评论 0 3
  • 本文章发表在我的个人博客上http://xuyao.club/blog/2017/05/06/metaprogra...
    深不可测xy阅读 1,204评论 0 3