Python猴子补丁

前端之家收集整理的这篇文章主要介绍了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时,它失败

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

@H_403_10@

解决方法

你最好只是把你的功能直接添加到类中:
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'
@H_403_10@ @H_403_10@

猜你在找的Python相关文章