Search code examples
pythonmodulepackage

How can I hook a function in a python module?


I have a package in my virtual environment installed in the site-packages folder of it. In that package there is a module with a bunch of functions. I want to change one of these functions without touching the package code, so I want to make a hook of that module and then change/overwrite the function so it behaves in the way I want.

I don't know if this is even possible in Python (I'm new to the language).

Example:

I have a package called their_package in my site-packages folder, inside I have a module named whatever.py with the following code:

import sys
import os

def this_is_a_function(parameter):
    //whatever logic in here
    return result

What I want is to hook the whatever.py module so I can redefine the this_is_a_function to have a different logic. Is this possible? I would appreciate a lot a code sample!


Solution

  • You can redefine your function with:

    import whatever
    
    def this_is_a_function(parameter):
        pass
    
    whatever.this_is_a_function = this_is_a_function