51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 518|回复: 6
打印 上一主题 下一主题

super 是干嘛用的?在 Python2 和 Python3 使用,有什么区别?为什么要使用 super?

[复制链接]
  • TA的每日心情
    无聊
    3 天前
  • 签到天数: 530 天

    连续签到: 2 天

    [LV.9]测试副司令

    跳转到指定楼层
    #
    发表于 2023-8-2 09:24:24 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    1测试积点
    本帖最后由 测试积点老人 于 2023-8-2 09:27 编辑

    回复可见
    游客,如果您要查看本帖隐藏内容请回复


    附件: 您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    昨天 07:50
  • 签到天数: 2818 天

    连续签到: 6 天

    [LV.Master]测试大本营

    6#
    发表于 2023-8-3 13:08:53 | 只看该作者

    super 用于继承父类的方法、属性
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    2024-9-9 10:50
  • 签到天数: 188 天

    连续签到: 1 天

    [LV.7]测试师长

    5#
    发表于 2023-8-3 11:12:21 | 只看该作者
    在 Python 中,`super()` 是一个特殊的函数,用于调用父类的方法。它在 Python 2 和 Python 3 中的用法是相同的,但在 Python 3 中使用更加推荐,因为 Python 3 对类的继承和方法解析做了一些改进。

    在 Python 中,当一个类继承自另一个类时,子类可以重写父类的方法。然而,有时候我们希望在子类中调用父类的方法,并且这样的调用可能会涉及多重继承时的复杂情况。这时候就可以使用 `super()` 函数来实现。

    使用 `super()` 有以下优点和目的:

    1. 显式调用父类方法:`super()` 允许你在子类中显式地调用父类的方法,而不需要直接指定父类的名字。这样使代码更具可读性和维护性。

    2. 支持多重继承:当子类继承多个父类时,`super()` 会根据方法解析顺序 (Method Resolution Order, MRO) 找到正确的下一个类,从而实现在多重继承中正确地调用父类的方法。

    在 Python 2 中,`super()` 需要两个参数:子类的类名和子类对象实例。例如:

    1. <p>```python</p><p>class Parent(object):</p><p>    def __init__(self):</p><p>        pass</p><p>
    2. </p><p>class Child(Parent):</p><p>    def __init__(self):</p><p>        super(Child, self).__init__()</p><p>```</p>
    复制代码


    而在 Python 3 中,你可以省略这些参数,直接使用 `super()` 即可:

    1. <p>```python</p><p>class Parent:</p><p>    def __init__(self):</p><p>        pass</p><p>
    2. </p><p>class Child(Parent):</p><p>    def __init__(self):</p><p>        super().__init__()</p><p>```</p>
    复制代码


    注意在 Python 3 中不需要显式地继承 `object`,因为所有类都默认继承自 `object`。

    总结:`super()` 在 Python 中用于调用父类的方法,提供了更好的多重继承支持,并使代码更具可读性和可维护性。在 Python 3 中,`super()` 使用更为简洁方便。

    回复

    使用道具 举报

  • TA的每日心情
    开心
    昨天 14:13
  • 签到天数: 459 天

    连续签到: 6 天

    [LV.9]测试副司令

    4#
    发表于 2023-8-3 09:07:32 | 只看该作者
    继承
    回复

    使用道具 举报

  • TA的每日心情
    开心
    1 小时前
  • 签到天数: 653 天

    连续签到: 21 天

    [LV.9]测试副司令

    3#
    发表于 2023-8-3 09:03:49 | 只看该作者
    学习下
    回复

    使用道具 举报

  • TA的每日心情
    奋斗
    前天 08:45
  • 签到天数: 1806 天

    连续签到: 5 天

    [LV.Master]测试大本营

    2#
    发表于 2023-8-3 09:03:30 | 只看该作者
    super 用于继承父类的方法、属性。
    super 是新式类中才有的,所以 Python2 中使用时,要在类名的参数中写 Object。 Python3 默认是新式类,不用写,直接可用。
    使用 super 可以提高代码的复用性、可维护性。修改代码时,只需修改一处。
    回复

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 08:51
  • 签到天数: 668 天

    连续签到: 6 天

    [LV.9]测试副司令

    1#
    发表于 2023-8-3 09:00:37 | 只看该作者
    有区别吗?
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 12:30 , Processed in 0.077394 second(s), 23 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表