第三次小组分享 猴子补丁

Posted zqfzqf

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第三次小组分享 猴子补丁相关的知识,希望对你有一定的参考价值。

猴子补丁

什么是:

1,这个词原来为Guerrilla Patch,杂牌军、游击队,说明这部分不是原装的,在英文里guerilla发音和gorllia(猩猩)相似,再后来就写了monkey(猴子)。
2,还有一种解释是说由于这种方式将原来的代码弄乱了(messing with it),在英文里叫monkeying about(顽皮的),所以叫做Monkey Patch。

功能:

功能:

动态的属性的替换

用处

  1. 在运行时替换方法、属性等

  2. 在不修改第三方代码的情况下增加原来不支持的功能

  3. 在运行时为内存中的对象增加patch而不是在磁盘的源代码中增加

    monkey patch允许在运行期间动态修改一个类或模块

    举例

class Example():
    def func1(self):
        print('我才是原装')

def func2(*args):
    print('我要取代你')

def func3(*args):
    print('都给我一边去')

instance = Example()
Example.func1 = func2
instance.func1() # 我要取代你


instance.func1 = func3
instance.func1() # 都给我一边去


instance = Example()
instance.func1()
instance2 = Example()
instance2.func1() # 我要取代你

这里有一个比较实用的例子,很多代码用到 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()

以上是关于第三次小组分享 猴子补丁的主要内容,如果未能解决你的问题,请参考以下文章

第三次小组实践作业小组每日进度汇报:2017-12-5

《构建之法》小组第三次

第三次小组实践作业小组每日进度汇报:2017-12-2

Python基础复习函数篇

第三次小组实践作业小组每日进度汇报:2017-12-9

第三次小组实践作业小组每日进度汇报:2017-12-7