前言本次依然是选自python面试题系列,将一个比较偏的概念,可能很多人没怎么听说过——猴子补丁,其实所讲的内容很简单,它得益于python灵活的语法、一切皆对象的思想,一起来看看看看吧!目录一、什么是monkey patch
二、monkey patch的功能简介
2.1 运行时动态改变类的方法
2.2 monkey patch的应用场景
一、什么是monkey patch
为什么叫猴子补丁?这其实是一个很难回答的问题,似乎和Python语言没啥关系,而且也和它所实现的功能扯不上什么关系,但是偏偏就这么叫了,那就姑且这么称呼吧。
关于猴子补丁的由来网上查到两种说法:1,这个词原来为Guerrilla Patch,杂牌军、游击队,说明这部分不是原装的,在英文里guerilla发音和gorllia(猩猩)相似,再后来就写了monkey(猴子)。
2,还有一种解释是说由于这种方式将原来的代码弄乱了(messing with it),在英文里叫monkeying about(顽皮的),所以叫做Monkey Patch。
外国人有时候总是会给一些概念莫名其妙的称呼,这就不管他了,关键是理解它的本质和功能才是最重要的。
先明确一个观点:猴子补丁(monkey patch)的主要功能就是动态的属性的替换。虽然属性的运行时替换和猴子也没什么关系,所以说猴子补丁的叫法有些莫名其妙,但是只要和“模块运行时替换的功能”对应就行了。
二、monkey patch的功能简介
monkey patch允许在运行期间动态修改一个类或模块(注意python中一切皆对象,包括类