Pyhon基础:Monkey Patch(猴子补丁)
来源:互联网 发布:什么软件有淘宝优惠卷 编辑:程序博客网 时间:2024/05/16 23:02
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。
为什么叫猴子补丁
属性的运行时替换和猴子也没什么关系,关于猴子补丁的由来网上查到两种说法:
1,这个词原来为Guerrilla Patch,杂牌军、游击队,说明这部分不是原装的,在英文里guerilla发音和gorllia(猩猩)相似,再后来就写了monkey(猴子)。
2,还有一种解释是说由于这种方式将原来的代码弄乱了(messing with it),在英文里叫monkeying about(顽皮的),所以叫做Monkey Patch。
猴子补丁的叫法有些莫名其妙,只要和“模块运行时替换的功能”对应就行了。
- Monkey patch就是在运行时对已有的代码进行修改,达到hot patch的目的。
- Eventlet中大量使用了该技巧,以替换标准库中的组件,比如socket。
首先来看一下最简单的monkey patch的实现。
由于Python中的名字空间是开放,通过dict来实现,所以很容易就可以达到patch的目的。
1,运行时动态替换模块的方法
stackoverflow上有两个比较热的例子,
另一个例子引用了,Zope wiki上对Monkey Patch解释:
还有一个比较实用的例子,很多代码用到 import json,后来发现ujson性能更高,如果觉得把每个文件的import json 改成 import ujson as json成本较高,或者说想测试一下用ujson替换json是否符合预期,只需要在入口加上:
import json import ujson def monkey_patch_json(): json.__name__ = 'ujson' json.dumps = ujson.dumps json.loads = ujson.loads monkey_patch_json()
2,运行时动态增加模块的方法
这种场景也比较多,比如我们引用团队通用库里的一个模块,又想丰富模块的功能,除了继承之外也可以考虑用Monkey Patch。
个人感觉Monkey Patch带了便利的同时也有搞乱源代码优雅的风险。
阅读全文
0 0
- Pyhon基础:Monkey Patch(猴子补丁)
- Pyhon基础:Monkey Patch(猴子补丁)
- 什么是猴子补丁(monkey patch)
- 什么是猴子补丁(monkey patch)
- 什么是Monkey Patch猴子补丁
- 什么是猴子补丁(monkey patch)
- 猴子补丁 Monkey-patch(重写方法)
- 原型污染和猴子补丁 Prototype Pollution and Monkey-Patching
- 猴子补丁
- 猴子补丁
- Monkey patch
- patch补丁
- 原型污染和猴子补丁 Prototype Pollution and Monkey-Patching,monkeypatching
- ORACLE 10g 升级补丁(Patch)
- ORACLE 11g 升级补丁(Patch)
- ORACLE 11g 升级补丁(Patch)
- ORACLE 11g 升级补丁(Patch)
- ORACLE 11g 升级补丁(Patch)
- 2-1KNN算法
- [代码积累]C#中泛型缓存的简单实现
- linux挂载详解
- PyQt5笔记(06) -- 菜单
- linux lua编译
- Pyhon基础:Monkey Patch(猴子补丁)
- 事务及事务的特性
- BFS&Python
- KMP算法实现
- Java标识符的命名规则
- [聊聊架构] 日请求量过亿,谈陌陌的 Feed 服务优化之路
- Strings
- Scala和Java方法的相互调用
- 数组和指针一道非常值得深思的笔试题
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
动物疫苗过敏怎么办
产蛋鸡厌食怎么办
母鸡高温不产蛋怎么办
天热鸡群采食量下降怎么办
票卖不了 怎么办
蛋鸡换料产蛋率下降怎么办?
蛋鸡不吃食怎么办
像皮泥弄衣服上怎么办
衣服弄上泥点怎么办
白色衣服弄上泥怎么办
蜗牛吃菜叶怎么办
大蜗牛下蛋怎么办
身上有液臭怎么办
俯卧撑手肘疼怎么办
俯卧撑肘关节疼怎么办
新疆网购怎么办
厂子破产工资怎么办
破产后员工工资怎么办
拖欠工资无合同怎么办
离职公司拖欠工资怎么办
北京外地牌照怎么办
帽子丢了怎么办
olay小白瓶长毛怎么办
烟酰胺长毛怎么办
cpu不通电怎么办
班组人员不听话怎么办
业务员调货不还怎么办
uml考试不会怎么办
uml考试怎么办
企业组织代码证怎么办
库存商品在贷方怎么办
血项20000多怎么办
大米生小肉虫子怎么办
大米生肉虫怎么办
榻榻米内部潮湿怎么办
柜子里潮湿怎么办
鞋柜潮湿发霉怎么办
水雾魔珠吃了怎么办
刷手拿钱跑路了怎么办
基金暴跌怎么办
考不进中学怎么办