加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python猴子补丁

发布时间:2020-12-16 23:20:26 所属栏目:Python 来源:网络整理
导读:我需要monkeypatch请求’响应类(版本1.0.4,当前的这个问题),添加其他方法. 我有这个代码: import requestsclass Response(requests.models.Response): def hmm(self): return 'ok'requests.models.Response = Responser = requests.get('http://bbc.co.uk')
我需要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'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读