Python猴子补丁

我需要monkeypatch请求’响应类(版本1.0.4,当前的这个问题),添加其他方法.

我有这个代码:

import requests

class Response(requests.models.Response):
    def hmm(self):
        return 'ok'

requests.models.Response = Response

r = requests.get('http://bbc.co.uk')

print r

当原始响应调用super() – https://github.com/kennethreitz/requests/blob/master/requests/models.py#L391时,它失败

我认为这是因为它变得困惑,因为我已经取代了班级,我觉得我正在做一些愚蠢的事情,有什么想法?提前致谢.

最佳答案
你最好只是把你的功能直接添加到类中:

def hmm(self):
    return 'ok'
requests.models.Response.hmm = hmm

这工作很好:

>>> import requests
>>> def hmm(self):
...     return 'ok'
... 
>>> requests.models.Response.hmm = hmm
>>> r = requests.get('http://bbc.co.uk')
>>> print r
<Response [200]>
>>> r.hmm()
'ok'
>>> requests.__version__
'1.0.4'

转载注明原文:Python猴子补丁 - 代码日志