解释Python中的monkey patching
Monkey patching是一种在运行时动态修改代码的技术。实际上,通过进行Monkey patch,我们改变了代码的行为,但不会影响原始源代码。
历史
Monkey patch源自游击补丁(guerrilla patch)一词,游击战几乎可以定义为猴子物种。游击补丁指的是秘密地进行变更。不过,猴子补丁听起来更容易发音,所以现在被称为“Monkey patch”。在“Monkey-patch”一词中,monkey一词定义了dynamic一词。
Python中的Monkey patching
Python中的Monkey patching指的是在运行时修改或更新代码、类或任何模块。简单来说,我们可以在运行时更改类/模块的行为或工作方式,而不必更改整个Python代码。不过,有时候Monkey patching被认为是不良的编程实践,因为对象的定义未准确描述对象在代码中的行为。
示例
class first:
def print(self)
print(“hello world”)
输出
如果我们运行以上代码,将会生成以下输出结果:
Hello world
Monkey patching后的代码
示例
Import monkey
def monkey_function(self):
print(“Hello world”)
# updating the print() with monkey_function()
monkey.A.print = monkey_function
# revoking method print() as method monkey_function()
obj = monkey.A()
obj print()
输出
如果我们运行上述代码,将会生成以下输出:
Hello world