覆盖Django模块类方法
问题内容:
在我的Django应用程序中,我通过安装了一个模块pip
。我需要覆盖中的某些方法site- packages/module/views.py
。我想,我需要将此模块导入我的自定义模块目录中,并简单地继承类和重写方法。
最好的方法是什么?如何在不编写site-packages
目录代码的情况下正确执行操作?
问题答案:
您所追求的通常被称为猴子修补。
import some_module
def my_method(self):
pass
some_module.SomeClass.a_method = my_method
请注意,尽管取决于方法的性质和库初始化,但修补该方法可能为时已晚。例如,如果要在模块加载时调用要修补的方法,则在调用它之前将永远无法对其进行修补。
尝试在应用程序启动时尽早修补有问题的类