zoukankan      html  css  js  c++  java
  • 第三次小组分享 猴子补丁

    猴子补丁

    什么是:

    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()
    
  • 相关阅读:
    js变量
    运行javascript的方式
    .Net 内存泄露
    .NET Reflector反编译的方法
    SVN 忽略获取和提交obj、bin文件夹
    SQL Server编程(06)触发器
    SQL Server编程(05)游标
    SQL Server编程(04)基本语法
    SQL Server编程(03)自定义存储过程
    SQL Server编程(02)自定义函数
  • 原文地址:https://www.cnblogs.com/zqfzqf/p/11996977.html
Copyright © 2011-2022 走看看