2015-11-25 128 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