Python之猴子补丁

Posted 亚洲哈登

tags:

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

1.在运行时,对属性,方法,函数等进行动态替换
2.其目的往往是为了通过替换,修改来增强,扩展原有代码的能力
#test2.py
class Person:
    def get_score(self):
        ret = {english:80,history:100,chinese:150}
        return  ret
#test3.py
def get_score(self):
    return dict(name=self.__class__.__name__,english=100,chinese=40,history=120)
from test1 import Person
from test2 import get_score
def momkeypatch4Person():
    Person.get_score = get_score

momkeypatch4Person()

if __name__ == "__main__":
    print(Person().get_score())
上例中,假设Person类get_score方法是从数据库拿数据,但是测试的时候不方便,使用猴子补丁,替换了get_socre方法,返回模拟数据

  

以上是关于Python之猴子补丁的主要内容,如果未能解决你的问题,请参考以下文章

Python 3:猴子补丁代码不能通过多处理重新导入

python的猴子补丁monkey patch

Python 中的鸭子类型和猴子补丁

Python中的猴子补丁

gevent协程之猴子补丁带来的坑

Python面试题之“猴子补丁”(monkey patching)指的是什么?这种做法好吗?