覆盖Django模块类方法

时间:2015-09-11 18:49:31

标签: python django

在我的Django应用程序中,我通过pip安装了一个模块。我需要覆盖site-packages/module/views.py中的某个方法。我假设,我需要在我的自定义模块目录中导入此模块,并简单地继承class和override方法。

最好的方法是什么?如果不在site-packages目录中编写代码,我该怎么做呢?

1 个答案:

答案 0 :(得分:4)

您所追求的通常被称为monkey patching

import some_module

def my_method(self):
   pass

some_module.SomeClass.a_method = my_method

小心但是根据方法和库初始化的性质,修补方法可能为时已晚。例如,如果在加载模块时调用要修补的方法,则在调用模块之前将永远无法对其进行修补。

在应用程序启动中尽早尝试并修补相关课程