为什么继承了“对象”的python类在其__init__方法中将其称为“超级”?

克里斯托弗

我在查看requests模块的源代码时发现了以下代码:

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)看到了潜在的实用程序,它具有某种形式的Responses抽象基类,这将使传输适配器将Response行为非常不同的s返回到标准HTTPResponse对象。因此,将子类中的大部分逻辑重构为ABC似乎很有意义。

后来在重构中,由于不必要的复杂性,它再次被剔除。现实情况是,想要定义专门Response对象的人可以简单地继承子类Response,而不用拥有无所作为的ABC。这使代码中的主线用例(原始请求)更加简洁,几乎没有任何用处。

BaseRequest班级撤出时,这一行被忽略了,但是由于它不会引起任何问题,因此不再需要删除它。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Python类继承对象?

来自分类Dev

当父级不从对象继承时,Python 2.x超级__init__继承不起作用

来自分类Dev

为什么将Counter的__init__方法称为描述符?

来自分类Dev

在类X的__new__方法中取消类型X的对象在返回未选中的对象时调用__init__,为什么?

来自分类Dev

python类的__init__方法

来自分类Dev

为什么在Java中将函数称为方法?

来自分类Dev

如何继承在python 3中类的__init__方法中定义的变量

来自分类Dev

带有 __init__ 函数的 Python 类多重继承

来自分类Dev

为什么__init__在python中失败

来自分类Dev

为什么将其称为回溯?

来自分类Dev

为什么python中的继承要求父类显式继承对象?

来自分类Dev

为什么在__init__之外定义对象变量不赞成?

来自分类Dev

如何在其元类的__init__方法期间将方法绑定到类?

来自分类Dev

如何在其元类的__init__方法期间将方法绑定到类?

来自分类Dev

为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

来自分类Dev

为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

来自分类Dev

在Python中复制基类'__init__'签名的正确方法是什么?

来自分类Dev

Python约定:我通常应该将超类称为__init__吗?

来自分类Dev

为什么最终类不能被继承而最终方法可以被继承?

来自分类Dev

为什么在手机/平板电脑中将其称为Flash,在PC上称为Flash

来自分类Dev

为什么不能将类属性作为参数直接分配给类括号,而不是使用def __init__方法?

来自分类Dev

为什么在EF中从数据库中将其称为“代码优先”

来自分类Dev

Python 2/3:为什么type(Foo .__ init__)不同?

来自分类Dev

为什么在Python中使用双重__init__?

来自分类Dev

为什么可以从python中的类对象继承私有函数

来自分类Dev

在继承类的超级方法中返回“ this”

来自分类Dev

在继承类的超级方法中返回“ this”

来自分类Dev

Python类__init__确认

来自分类Dev

Python:类中的 __init__

Related 相关文章

  1. 1

    为什么Python类继承对象?

  2. 2

    当父级不从对象继承时,Python 2.x超级__init__继承不起作用

  3. 3

    为什么将Counter的__init__方法称为描述符?

  4. 4

    在类X的__new__方法中取消类型X的对象在返回未选中的对象时调用__init__,为什么?

  5. 5

    python类的__init__方法

  6. 6

    为什么在Java中将函数称为方法?

  7. 7

    如何继承在python 3中类的__init__方法中定义的变量

  8. 8

    带有 __init__ 函数的 Python 类多重继承

  9. 9

    为什么__init__在python中失败

  10. 10

    为什么将其称为回溯?

  11. 11

    为什么python中的继承要求父类显式继承对象?

  12. 12

    为什么在__init__之外定义对象变量不赞成?

  13. 13

    如何在其元类的__init__方法期间将方法绑定到类?

  14. 14

    如何在其元类的__init__方法期间将方法绑定到类?

  15. 15

    为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

  16. 16

    为什么在python中不可能有一个object方法返回一个元组作为新对象__init__方法中的参数?

  17. 17

    在Python中复制基类'__init__'签名的正确方法是什么?

  18. 18

    Python约定:我通常应该将超类称为__init__吗?

  19. 19

    为什么最终类不能被继承而最终方法可以被继承?

  20. 20

    为什么在手机/平板电脑中将其称为Flash,在PC上称为Flash

  21. 21

    为什么不能将类属性作为参数直接分配给类括号,而不是使用def __init__方法?

  22. 22

    为什么在EF中从数据库中将其称为“代码优先”

  23. 23

    Python 2/3:为什么type(Foo .__ init__)不同?

  24. 24

    为什么在Python中使用双重__init__?

  25. 25

    为什么可以从python中的类对象继承私有函数

  26. 26

    在继承类的超级方法中返回“ this”

  27. 27

    在继承类的超级方法中返回“ this”

  28. 28

    Python类__init__确认

  29. 29

    Python:类中的 __init__

热门标签

归档