如何在Python模块中挂钩一个函数?
我在我的虚拟环境里有一个包,这个包安装在 site-packages
文件夹里。这个包里面有一个模块,里面有很多函数。我想在不修改包代码的情况下,改变其中一个函数的行为,所以我想给这个模块做一个“钩子”,然后修改或覆盖这个函数,让它按我想要的方式工作。
我不知道在Python中这是否可行(我对这个语言还很陌生)。
举个例子:
我在 site-packages
文件夹里有一个叫做 their_package 的包,里面有一个名为 whatever.py
的模块,代码如下:
import sys
import os
def this_is_a_function(parameter):
//whatever logic in here
return result
我想给 whatever.py
模块做一个钩子,这样我就可以重新定义 this_is_a_function
,让它有不同的逻辑。这样做可能吗?如果能给我一个代码示例,我会非常感激!
1 个回答
4
你可以通过下面的方式重新定义你的函数:
import whatever
def this_is_a_function(parameter):
pass
whatever.this_is_a_function = this_is_a_function