猴子打补丁是什么?

猴子打补丁是什么?

我试着理解,什么是猴子补丁还是猴子补丁?

这是否类似于方法/操作符重载或委托?

这些东西有什么共同之处吗?


jeck猫
浏览 654回答 3
3回答

慕容森

不,不像那些东西。它只是在运行时动态替换属性。例如,考虑一个具有方法的类。get_data..该方法执行外部查找(例如,在数据库或WebAPI上),以及类中的各种其他方法调用它。但是,在单元测试中,您不希望依赖外部数据源-因此您可以动态地替换get_data方法具有返回一些固定数据的存根。因为Python类是可变的,方法只是类的属性,所以您可以随心所欲地这样做-事实上,您甚至可以用完全相同的方式替换模块中的类和函数。但是,作为一个评论员请指出,当猴子点击时要小心:如果除了您的测试逻辑调用之外,还有什么其他的get_data同样,它也会把你的猴子称为修补的替代品,而不是原来的-这可能是好的,也可能是坏的。小心点。如果存在某些变量或属性,该变量或属性也指向get_data函数替换它时,此别名不会更改其含义,并将继续指向原来的get_data..(为什么?Python只是重新绑定名称get_data在您的类中,其他函数对象;其他名称绑定完全不受影响。)

偶然的你

MonkeyPatch是Python代码的一部分,它在运行时(通常在启动时)扩展或修改其他代码。一个简单的例子如下所示:from SomeOtherProduct.SomeModule import SomeClassdef speak(self):     return "ook ook eee eee eee!"SomeClass.speak = speak资料来源: 猴贴Zope wiki上的一页。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python