2015-11-25 95 views
0

我在我的Django项目安装了一个包,让我们说pip install somepackage覆盖Python包util的方法

这个包附带了一些修改意见,所以我做的:

class MyView(somepackage.CustomView): 
    ... 

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

class MyView(somepackage.CustomView): 

    def somemethod(...): 
     ... 

但事实并非如此。

如何覆盖该util的方法?

+0

你想用自己取代_that_方法?这不是一种方法,它是'sompackage.utils'模块中的函数。 –

+0

你可以做猴子补丁。 https://web.archive.org/web/20120730014107/http://wiki.zope.org/zope2/MonkeyPatch –

+0

@MichałF是的,我发现了一些我需要替换的东西,我可以为它写一个新的代码方法没有打破别的,但我不知道如何 – Gocht

回答

0

随着讨论的进行,我认为我们可以在模块级别的功能上做“猴子补丁”,它基本上可以用你的版本取代功能。有已经是一个answer,说明这一点,但引用在这里(与somepackage.utils替换math):

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