我已经在我的Django项目中安装了一个包,让我们说pip install somepackage
这个软件包带有一些修改过的视图,所以我这样做:
class MyView(somepackage.CustomView):
...
但我需要自定义somepackage.utils
(somepackage.utils.somemethod
)中的某些方法。如果这是somepackage.CustomView
我可以做的方法:
class MyView(somepackage.CustomView):
def somemethod(...):
...
但事实并非如此。
如何覆盖该util的方法?
答案 0 :(得分:0)
正如讨论所说,我认为我们可以做"猴子补丁"在模块级别的功能,它基本上取代了您的版本的功能。已有answer解释了这一点,但请在此处引用(将math
替换为somepackage.utils
):
>>> import math
>>> math.cos(90)
-0.4480736161291701
>>> old_cos = math.cos
>>> def new_cos(degrees):
... return old_cos(math.radians(degrees))
...
>>> math.cos = new_cos
>>> math.cos(90)
6.123233995736766e-17