【问题标题】:Override python package util method覆盖python包util方法
【发布时间】:2016-02-28 20:58:58
【问题描述】:

我在我的 Django 项目中安装了一个包,比如说pip install somepackage

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

class MyView(somepackage.CustomView):
    ...

但是somepackage.utils (somepackage.utils.somemethod) 中有一些我需要自定义的方法。如果这是somepackage.CustomView 中的一种方法,我可以这样做:

class MyView(somepackage.CustomView):

    def somemethod(...):
        ...

但事实并非如此。

我怎样才能覆盖那个 util 的方法?

【问题讨论】:

标签: python django packages overriding


【解决方案1】:

正如讨论的那样,我认为我们可以在模块级函数上做“猴子补丁”,基本上用你的版本替换函数。已经有一个 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 1970-01-01
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-06
    • 2010-10-27
    相关资源
    最近更新 更多