美文网首页
猴子补丁(Monkey Patch)

猴子补丁(Monkey Patch)

作者: cabbywang | 来源:发表于2018-05-14 01:08 被阅读0次

    猴子补丁(Monkey Patch)

    猴子补丁, 顾名思义...完全不知道是什么玩意有木有, 可能有些历史原因, 这里就不管了, 步入正题。

    猴子补丁就是在模块运行的时候替换模块中的某些方法。上代码可能比较容易理解

    >>> class A(object):
            def func(self):
                print('This is a func!')
    >>> A().func()
    # This is a func!
    

    上述代码很好理解, 正常调用, 然后执行func函数, 咱们继续

    >>> def func2(self):
           print('This is func2!')
    >>> A.func = func2
    >>> A().func()
    # This is func2!
    

    这里定义了一个func2函数, 然后将这个函数赋值给A.func, 然后执行同样的语句A().func(), 最后的输出不一样了, 这其实就是猴子补丁的实现

    下面是网上看到的一个感觉很不错的用法

    • 很多代码用到了import json, 但是后来发现ujson的性能更高, 这个时候可以用import ujson as json, 但是要每个文件都去修改, 显然很麻烦, 这里就可以用到猴子补丁
    import json
    import ujson
    
    def monkey_patch_json():
        json.__name__ = 'ujson'
        json.dumps = ujson.dumps
        json.loads = ujson.loads
        # json.dump = ujson.dump
        # json.load = ujson.load
    
    monkey_patch_json()
    

    相关文章

      网友评论

          本文标题:猴子补丁(Monkey Patch)

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