热点:

    五分钟掌握Python中super()函数的用法

      [   原创  ]   作者:
    收藏文章 暂无评论

    五分钟内与您分享阅读Python中super()函数的经验与技巧,具体内容如下:

    1、 在 Python 类继承中,子类继承父类并重载方法时,若需调用父类同名方法,通常有两种方式:super() 和 父类名。具体用法可参考以下代码示例:

    2、 在`Base`类中有一个`move`方法用于改变位置。若我们在子类中希望添加记录每次移动偏移量的功能,可以通过重载`move`方法实现:先执行自定义操作(记录偏移量),再调用父类的`move`方法完成位置移动,这样无需重复实现移动逻辑。例如,在上述案例中我们通过`super`调用了父类方法,那么能否直接用`Base`来调用?

    3、 当Base类调用父类函数时,需在函数中传入self参数。之前提到,类的普通函数需通过类对象调用,其第一个参数默认为self,调用时无需显式传递,因为通过对象调用时会自动传入。然而,如果直接用Base类名调用,方法内部需要明确self所指的对象。那么,这两种调用方式有区别吗?答案是肯定的。下面先来看一下super的定义,它会对理解这两种方式的区别有所帮助。

    4、 可以看到,`super` 共有四种调用形式:

    5、 1. `super()`:等价于 `super(当前类名, self)`,这是 Python 3 中常用的形式。

    6、 2. `super(type)`:不绑定任何对象,适用于类方法或静态方法。

    7、 3. `super(type, obj)`:绑定到具体对象 `obj`,要求 `obj` 是 `type` 类型或其子类的实例。

    8、 4. `super(type, type2)`:绑定到类型 `type2`,要求 `type2` 是 `type` 的子类。

    9、 这里重点介绍 `super()` 和 `super(type, obj)`,它们是实际开发中最常见的用法。在前面的例子中,`super` 的行为与直接调用父类 `Base` 方法类似。接下来通过另一个例子进一步说明其用法。

    10、 四个类中,Base的初始化函数被调用了两次,这是为什么?是因为Sub.__init__里同时调用了Device1和Device2的初始化方法吗?确实如此。那能不能只调用其中一个?如果只调用Device1.__init__,Base会如何?结果会怎样?这样Base就只会被调用一次了。

    11、 由于缺乏name2属性,且Device2的初始化方法__init__未被调用,导致name2未定义。若将Base替换为super,结果会如何?这值得进一步探讨。

    soft.zol.com.cn true https://soft.zol.com.cn/1001/10012836.html report 1743 五分钟内与您分享阅读Python中super()函数的经验与技巧,具体内容如下: 1、 在 Python 类继承中,子类继承父类并重载方法时,若需调用父类同名方法,通常有两种方式:super() 和 父类名。具体用法可参考以下代码示例: 2、 在`Base`类中有一个`move`方法用于改变位置...
    不喜欢(0) 点个赞(0)
    随时随地资讯查报价 就上ZOL手机客户端,点击或扫描二维码下载
    立即下载

    Superπ

    更新时间:2019年03月25日

    用户评分:6.4 | 14人点评

    软件类型:免费软件

    软件语言:简体中文

    软件资讯文章推荐

    Superπ
    • 更新时间:2019年03月25日
    • 软件大小:0.1MB
    • 软件分类:硬件检测
    • 语言种类:简体中文
    • 软件评级:14 人点评