覆盖python包的util方法

时间:2015-11-25 22:03:59

标签: python django packages method-overriding

我已经在我的Django项目中安装了一个包,让我们说pip install somepackage

这个软件包带有一些修改过的视图,所以我这样做:

class MyView(somepackage.CustomView):
    ...

但我需要自定义somepackage.utilssomepackage.utils.somemethod)中的某些方法。如果这是somepackage.CustomView我可以做的方法:

class MyView(somepackage.CustomView):

    def somemethod(...):
        ...

但事实并非如此。

如何覆盖该util的方法?

1 个答案:

答案 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