如何在python模块中挂钩函数?

时间:2014-04-08 09:43:54

标签: python module package

所以我的虚拟环境中的软件包安装在它的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 个答案:

答案 0 :(得分:2)

您可以使用以下方式重新定义您的功能:

import whatever

def this_is_a_function(parameter):
    pass

whatever.this_is_a_function = this_is_a_function