猴子补丁

作者: 我的好昵称 | 来源:发表于2019-07-03 20:47 被阅读0次
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。
猴子补丁的叫法有些莫名其妙,只要和“模块运行时替换的功能”对应就行了。

Monkey patch就是在运行时对已有的代码进行修改,达到hot patch的目的。
Eventlet中大量使用了该技巧,以替换标
准库中的组件,比如socket。

# 猴子补丁的用法

## 1,运行时动态替换模块的方法
比如一个类有一个方法get-data 这个方法做一些外部查询,类里面很多其他方法都调用了他,然而,咋一个单元测试中,不想依赖外部数据,所以用你哑方法get_data,只返回一些数据。

from someothrproduct.somemodule import someclass
def speak(self):
  return "ook ook eee eee eee!"

SomeClass.speak = speak

很多代码用到import  json,发现ujson性能高,
如果把每个文件的import json改成import ujson as json 成本高或者是测试一下ujson替换json是否符合

import json
import ujson
def monkey_patch_json():
  json._name_ = "ujson"
json
json.loads = ujson.loads  

monkey_patch_json()

常见问题
当猴子补丁的假设由于代码更新不再为真的时候,这可能导致一些问题,因此猴子补丁常常在条件下使用。

如果两个模块同时打了猴子补丁,只有后打的补丁才有效。

源代码和其行为在不知道有猴子补丁的人的视角下会出现矛盾。

相关文章

  • 猴子补丁的由来

    转:什么是猴子补丁 所谓的猴子补丁的含义是指在动态语言中,不去改变源码而对功能进行追加和变更。猴子补丁的这个叫法起...

  • 猴子补丁

  • 猴子补丁

    属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。猴子补丁的叫法有些莫名其妙,只要和“模块运行时替...

  • 猴子补丁

    1.遇到的问题使用协程的时候看到网上的例子在程序开头都要加上from gevent import monkey m...

  • Python猴子补丁

    属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。 为什么叫猴子补丁 属性的运行时替换和猴子也没什...

  • Python monkey patch

    详见 什么是猴子补丁(monkey patch)

  • 猴子补丁(Monkey Patch)

    猴子补丁(Monkey Patch) 猴子补丁, 顾名思义...完全不知道是什么玩意有木有, 可能有些历史原因, ...

  • 猴子补丁(monkey patch)

    写了一段时间java切回写python偶尔会出现一些小麻烦,比如:在java中自定义对象变成json串很简单,调用...

  • json|pickle|猴子补丁

    json 1、序列化:将内存数据转成字符串加以保存。dumps2、反序列化:将字符串转成内存数据加以读取。load...

  • scrapy编码猴子补丁

    案例 https://worldjpn.grips.ac.jp/documents/indices/pm/3.ht...

网友评论

    本文标题:猴子补丁

    本文链接:https://www.haomeiwen.com/subject/pqhqhctx.html