猴子补丁的概念
属性在运行时的动态替换,叫做猴子补丁(Monkey Patch)。一般是在startup的时候。
在运行期间动态修改一个类或模块。包括替换(修改)和增加。
猴子补丁的叫法有些莫名其妙,只要和“模块运行时替换的功能”对应就行了。
运行时动态替换模块的方法
import json
import ujson
print json.__name__ # 结果:json
def monkey_patch_json():
json.__name__ = 'ujson'
json.dumps = ujson.dumps
json.loads = ujson.loads
monkey_patch_json()
print json.__name__ # 结果:ujson
import study
# study.py文件
import json
print json.__name__ # 结果:ujson
class Cat:
def eat(self):
print "eat fish"
def monkey(self):
print "eat monkey"
Cat.eat = monkey
c = Cat()
c.eat() # 结果:eat monkey
运行时动态增加模块的方法
import requests
def eat():
return "l love eat fish"
requests.eat = eat
result = requests.eat()
print result # 结果:l love eat fish
猴子补丁主要有以下几个用处
在运行时替换方法、属性等。
在不修改第三方代码的情况下增加原来不支持的功能。
在运行时为内存中的对象增加patch而不是在磁盘的源代码中增加。
https://www.cnblogs.com/work115/p/5817781.html?utm_source=itdadao&utm_medium=referral
https://www.jianshu.com/p/f1c1eb495f47
https://www.jianshu.com/p/f1060b22aab8
https://blog.youkuaiyun.com/qq_33733970/article/details/77983848