class Response(object):
"""The :class:`Response <Response>` object, which contains a
server's response to an HTTP request.
"""
def __init__(self):
super(Response, self).__init__()
... more init method...
我的理解super()
表明,此呼叫根本不会执行任何操作。我发现相当的几个问题,关于超通话,但其他类的子类,但并非所有的工作object
本身。在python文档,也没有提及这种结构。
在我看来,这可能只是一个错误,如果您git blame
将该文件提交到引入该行的提交,您将在撰写本文时看到该文件Response
是的子类BaseResponse
。这行只是来自类重构的保留,还是这个super()调用根本没有做任何事情?
如Corley Brigman的评论中所述,这是不必要的,但无害。
在某些背景下,BaseResponse
该类是在Kenneth对Requests 1.0的冲刺中添加的。1.0代码更改引入了传输适配器,它使得可以为某些HTTP端点(或实际上是非HTTP端点)定义特定的行为。Transport Adapter接口的重要部分是HTTPAdapter.build_response()
方法,该方法从中获取返回的原始响应HTTPAdapter.send()
并从中构建一个RequestsResponse
对象。
显然,肯尼斯(Kenneth)看到了潜在的实用程序,它具有某种形式的Response
s抽象基类,这将使传输适配器将Response
行为非常不同的s返回到标准HTTPResponse
对象。因此,将子类中的大部分逻辑重构为ABC似乎很有意义。
后来在重构中,由于不必要的复杂性,它再次被剔除。现实情况是,想要定义专门Response
对象的人可以简单地继承子类Response
,而不用拥有无所作为的ABC。这使代码中的主线用例(原始请求)更加简洁,几乎没有任何用处。
当BaseRequest
班级撤出时,这一行被忽略了,但是由于它不会引起任何问题,因此不再需要删除它。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句