Python:覆盖第三方模块方法?

时间:2013-12-28 09:11:08

标签: python

所以我使用的是我安装的第三方python模块。

我是这样开始的:

from module import SomeClass

sc = SomeClass()
sc.process(text);

process()正在使用名为get_Text()

的同一模块中另一个类的另一个方法

我想修改get_Text()方法以返回修改后的字符串。

所以sc.process(text)会返回与以往不同的结果。

我是否使用猴子补丁?怎么会在这里工作?我是否复制粘贴get_text()方法并对其进行修改并在运行时对其进行修补?

2 个答案:

答案 0 :(得分:2)

明确比隐含更好。在可能的情况下,只需使用继承来改变get_text

的结果
class SomeOtherClass(SomeClass):
    def get_text(self):
        return someClass.get_text(self) + ' bar'

答案 1 :(得分:1)

为什么不试试这样的事,

>>> import os
>>> os.getcwd()
'/home/sivacn'
>>> 
>>> def getcwd():
...     return 'Patched'
... 
>>> os.getcwd = getcwd
>>> 
>>> os.getcwd()
'Patched'
>>>