【Python基础教程】super()函数的正确使用方法

news2024/7/4 4:28:57

前言

大家早好、午好、晚好吖 ❤ ~欢迎光临本文章

1.super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了,super()内也可不加参数

2.规律是super是按调用的次序执行,super后面的语句是逆向执行的。

有2段示例代码,不同的在于value有没有用self.value表示。

用self.value表示传入的参数,会产生类似递归的效果进来的One,Two,返回是Two,One。

用value表示则是按照顺序传递的。

class Base:
    def __init__(self, value):
        self.value = value

程序1:

foo = Ways(5)
  • 先调用super(Ways, self).init(value)

  • 再调用super(One, self).init(value)和super(Two, self).init(value)

  • 再调用self.value = value,此时self.value为5

其后类似递归的逐渐返回

  • 调用self.value += 3, self.value为8

  • 调用self.value *= 2,self.value为16,注意进来的One,Two,返回是Two,One

'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:702813599
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
class One(Base):
   def __init__(self, value):
       super(One,self).__init__(value)# super(本身类名,self).方法名(参数)这样就可以调用父类的方法和参数了
       self.value *= 2


class Two(Base):
   def __init__(self, value):
       super(Two,self).__init__(value)
       self.value += 3


class Ways(One, Two):
   # super是继承父代
   def __init__(self, value):
       super(Ways,self).__init__(value)

foo = Ways(5)
print(foo.value) # 菱形继承问题

class Base:
   def __init__(self, value):
       self.value = value


class One(Base):
   def __init__(self, value):
       super(One, self).__init__(value * 2)

程序2:

foo = Ways(5)

先调用super(Ways, self).init(value)
再调用super(One, self).init(value * 2)和super(Two, self).init(value + 3),然后调用self.value = value----One调用Base,使self.value为5,运行One,self.value为10,注意Two不再调用Base使self.value再为5,
直接加3,变成13

规律是super是按调用的次序执行,super后面的语句是逆向执行的。

class Two(Base):
   def __init__(self, value):
       super(Two, self).__init__(value + 3)


class Ways(One, Two):
   def __init__(self, value):
       super(Ways, self).__init__(value)

foo = Ways(5)
print(foo.value) # 13

尾语 💝

好了,今天的分享就差不多到这里了!

完整代码、更多资源、疑惑解答直接点击下方名片自取即可。

对下一篇大家想看什么,可在评论区留言哦!看到我会更新哒(ง •_•)ง

喜欢就关注一下博主,或点赞收藏评论一下我的文章叭!!!

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/847368.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高忆管理:股票成交量怎么看?

股票成交量是衡量股票商场生意活泼度的重要目标之一。通过调查股票成交量的巨细和改变趋势,能够帮助出资者更好地了解商场状况和出资方向,从而做出更正确的出资决策。那么,股票成交量怎么看?本文将从多个视点为您剖析。 一、股票成…

ZyjDataLink 全量MySQL同步程序 - 开发过程 01

开发过程由本人从 架构设计 到 代码实现 独立完成,通过该博客记录分享开发经验 ZyjDataLink 当前的目标是做到 MySQL大数据量的快速同步,后期希望扩展的功能 高度可操作性,融入增量数据库同步,跨数据库同步 ZyjDataLink 需求分析…

python数据分析报告 范文,python数据分析报告+代码

大家好,本文将围绕python数据分析期末大作业报告展开说明,python数据分析期末大作业是一个很多人都想弄明白的事情,想搞清楚python数据分析报告怎么写需要先了解以下几个事情。 背景 虽然用Python开发爬虫脚本,顺利把某房产网站的…

小学生作业随机加减乘除运算计算习题答案 html源码

小学生作业随机加减乘除运算计算习题答案 html源码 这道题目提供了多种选项,包括运算符和输入的运算数范围。题目数量也可以选择。如果你选择好了选项,就可以点击出题按钮进行练习。 为了方便,题目答案可以打印出来。但是,如果隐藏了横线,就会去除等号后面的下划线。推荐使用…

Java中实现图片和Base64的互相转化

文章目录 前言一、代码二、测试三、结果 前言 公司项目中用到了实名认证此,采用的第三方平台。后端中用到的单项功能为身份证信息人像对比功能,在写demo的过程中发现,它们所要求的图片信息为base64编码格式。 一、代码 package com.bajiao…

QGIS二次开发二:不重新编译QGIS进行二次开发

目录 一、下载OSGeo4W 二、配置VS 三、测试代码 四、补充:配置QT插件 五、导出项目为模板 六、Release模式的一个问题解决 由于重新编译QGIS对于初学者来说还是有一定难度,因此这里介绍另外一种不编译QGIS也能够二次开发的方法,不需要…

世界算力简史(上)

1946年2月14日,在美国宾夕法尼亚州东南部的费城,人们正在像以往一样正常工作和生活。 忽然,他们发现,房间里的灯暗了下来。 刚刚经历过二战的人们,对这种情况习以为常。他们心想:“是不是哪里的电力线路又坏…

骑行,自由和安全,哪个第一?

自行车运动,绿色自由,但安全为本。 自由,对于自行车运动来说,是骑行的初衷和核心。它不仅代表着一种无拘无束的出行方式,更是一种生活态度,一种挑战自我,追求极致的精神。就像鱼儿需要海洋&…

Spring Bean 生命周期的执行流程

问题描述 Spring 生命周期全过程大致分为五个阶段: 1、创建前准备阶段 2、创建实例阶段 3、依赖注入阶段 4、 容器缓存阶段 5、销毁实例阶段 下图是 Spring Bean 生命周期完整流程图,其中对每个阶段的具体操作做了详细介绍: 一、创建前准备阶…

数字员工助力农行安全生产数字化转型应用实践

党的二十大指出,“以数字中国建设助力中国式现代化,加快建设网络强国、数字中国”,2022年1月发布《“十四五”数字经济发展规划》提出,加强类人智能、自然交互与虚拟现实等技术研究。近年来,各大银行纷纷推出自己的数字…

报错 | Spring报错详解

Spring报错详解 一、前言二、报错提示三、分层解读1.最下面一层Caused by2.上一层Caused by3.最上层Caused by 四、总结五、解决方案 一、前言 本文主要是记录在初次学习Spring时遇到报错后的解读以及解决方案 二、报错提示 三、分层解读 遇到报错的时候,我们需要…

一起来看看 Compose Accompanist

好久不见,真的挺久了,之前一个月写的文章比现在多半年的都多。今年第一篇文章是简单写了下 Android 14 的适配:Android 14 又来了?别扶!抬起我来吧! 今天咱们来一起看看 Compose Accompanist 吧&#xff0…

DC电源模块负载情况不佳的原因

BOSHIDA DC电源模块负载情况不佳的原因 DC电源模块是电子设备中不可或缺的部件之一。在实际应用中,往往会遇到DC电源模块负载情况不佳的情况,例如电压下降、电流不稳等。这些问题的出现,往往会导致电子设备无法正常工作、降低设备的可靠性和…

Python爬虫的解析(学习于b站尚硅谷)

目录 一、xpath  1.xpath插件的安装  2. xpath的基本使用  (1)xpath的使用方法与基本语法(路径查询、谓词查询、内容查询(使用text查看标签内容)、属性查询、模糊查询、逻辑运算)  (2&a…

如何制作业务流程图?6步教程附通用模板!

业务流程图是指实现特定业务目标所涉及的活动流程的可视化表示。它们用于记录和分析业务流程,有助于识别瓶颈、低效和改进机会。本文将为大家介绍制作业务流程图的通用步骤,让新手也能快速掌握一份业务流程图的绘制方法。 1. 明确流程 首先&#xff0…

7.6 创建对象内存分析

7.6 创建对象内存分析 主程序实例 package com.baidu.www.oop;import com.baidu.www.oop.demo03.Pet;public class Application {public static void main(String[] args) {Pet dog new Pet();dog.name "旺财";//这里的对象的属性在类中需要定义为public&#xff…

2023-08-08 Ubuntu 挂载U盘 fdisk -l 、sudo mount /dev/sdb1 /mnt/mydisk

一、基本命令 1、插入U盘,查看U盘是否被系统识别: 打开终端,输入: sudo fdisk -l 查看系统是否识别U盘,如果识别,会显示U盘的相关信息,如果没有识别,则说明系统没有识别U盘。 2…

【雕爷学编程】Arduino动手做(193)---移远 BC20 NB+GNSS模块8

37款传感器与模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&#x…

我设置了IIS的默认文档为什么还是提示403 - 禁止访问: 访问被拒绝。

我设置了IIS的默认文档为什么还是提示403 - 禁止访问: 访问被拒绝。 这个问题我是在处理dedeCMS站点时发现的问题 解决方法: 打开IIS》应用程序池》(找到你的站点应用池)》右键》基本设置》版本:选择2.0》管道:选择“…

Qt6之QListWidget——Qt仿ToDesk侧边栏(1)

一、 QLitWidget概述 注意:本文不是简单翻译Qt文档或者接口函数,而侧重于无代码Qt设计器下演示使用。 QListWidget也称列表框类,它提供了一个类似于QListView提供的列表视图,但是它具有一个用于添加和删除项的经典的基于项的接口…