首页 > 其他分享 >一文搞懂!super(子类, self).父类方法(参数)的作用及使用方法

一文搞懂!super(子类, self).父类方法(参数)的作用及使用方法

时间:2024-03-30 12:59:53浏览次数:30  
标签:子类 self 方法 参数 搞懂 父类 super

在这里插入图片描述

文章目录

一、作用详解

super(子类, self).父类方法(参数)的作用是:在子类中调用父类方法

下面我们来拆解一下这句代码:
super():输入一个对象,它会将方法调用委托给该对象的父类。
super(子类, self):输入的对象是子类,self指子类实例化的对象本身,那么接下来的方法调用就由父类实现。
super(子类, self).父类方法(参数):调用父类方法,并输入相应参数,完成在子类中对父类方法的调用。

具体执行步骤是这样的:调用子类 -> 去父类找方法 -> 父类的方法执行 -> 回到子类执行剩余代码

二、使用方法

接下来,让我们通过一个例子来掌握super(子类, self).父类方法(参数)的使用方法:

class Parent:
    # 定义父类的初始化方法
    def __init__(self, param_parent="父类默认参数"): # 定义默认参数
        self.param_parent = param_parent
        print(param_parent)

    # 定义父类的方法
    def function_parent(self):
        print("父类方法")


class Child(Parent):
    # 重新定义初始化方法,将覆盖从父类继承的初始化方法
    def __init__(self, param_child):
        super(Child, self).__init__()  #如果不传入参数,将使用父类默认参数
        super(Child, self).__init__(param_child)  #如果传入参数,将覆盖父类默认参数

    # 定义子类的方法
    def function_child(self):
        super(Child,self).function_parent()  #调用父类方法
        print("子类方法")


# 实例化子类
aaa = Child("子类更新参数")
aaa.function_child()

在这个例子中,我们使用了super(子类, self).__init__()super(子类, self).__init__(参数)super(Child,self).function_parent()三种方法。

在Python代码阅读中,我们经常能见到super(子类, self).__init__(参数)方法,super(子类, self).__init__(参数)并不是什么特殊的语法,它就是调用父类的初始化方法而已。在这个例子中,父类的初始化方法是有默认参数的,子类在调用父类初始化方法时,可以输入新的参数,也可以不输入,使用父类默认参数。

在子类的其他方法中,也可以调用父类的方法。在本例中,子类的function_child()中通过super(Child,self).function_parent()调用了父类的function_parent()方法,其执行完父类方法后,又返回来接着执行完了子类剩余代码。

通过这个例子,大家对于super(子类, self).父类方法(参数)一定有了更深的理解吧!

三、注意事项

  1. 子类在调用父类方法时,要把父类方法中的参数都写上(有默认值的可以不写,self也不用写),不然会报错。
  2. 类的继承只是继承了类的模板(属性和方法),但一般不继承它里面的值(默认值除外)。

写在后面

这个专栏主要是我在实现深度学习项目中总结的一些问题,以备未来笔试和面试之需,不过由于学习的不深入,也只是走马观花,很多问题总结得也不是很透彻,望读者见谅,如果有错误和不足之处,还望大家在评论区指出。希望能给大家的学习带来一点帮助,共同进步!!!

标签:子类,self,方法,参数,搞懂,父类,super
From: https://blog.csdn.net/weixin_51193374/article/details/137142800

相关文章

  • 一文带你搞懂匈牙利算法
    一文带你搞懂匈牙利算法附赠自动驾驶学习资料和量产经验:链接什么是匈牙利算法最近在研究一个比较有意思的应用—车辆追踪算法。传统的车辆追踪算法是基于检测器检出车辆,之后使用卡尔曼滤波和匈牙利算法来进行位置预测与数据级联的。关于卡尔曼滤波,我之前已经写过一篇文章进行......
  • 一文搞懂Python的数据结构-列表
    大道至简:任何技术都来源于生活,每一个技术点都是为了解决生活场景中的某个问题1/Python列表基础1.1什么是列表?从生活场景说起,购物清单=列表当我们去购物时,我们通常会准备一个购物清单,其中列出了我们需要购买的物品。这个购物清单就是一个列表的实际应用。你可......
  • 一文带你搞懂RTK定位
    一文带你搞懂RTK定位附赠自动驾驶学习资料和量产经验:链接说到定位,相信大家一定不会觉得陌生。如今我们所处的信息时代,人人都有手机。每天,我们都会用到与地图和导航有关的APP。这些APP,就是基于定位技术的。说到定位技术呢,大家又肯定会想到GPS、北斗这些名词。是的,这些都属于全......
  • Stepwise Self-Consistent Mathematical Reasoning with Large Language Models
    本文是LLM系列文章,针对《StepwiseSelf-ConsistentMathematicalReasoningwithLargeLanguageModels》的翻译。基于大型语言模型的逐步自洽数学推理摘要1引言2相关工作3TriMaster100数据集4循序渐进的自洽思维链5实验6结论摘要使用大型语言模型进......
  • 花了100块大洋搞懂 ipv6的用户如何访问ipv4 服务器
    大家好,今天蓝胖子花了100多块搞懂了ipv6的用户如何访问ipv4服务器,将收获与大家分享下。ipv4和ipv6的协议栈不同,这意味着,其对应的ip包的封装和解析不同,那么只支持ipv4的机器就无法直接与ipv6的服务器进行通信。但目前已经有越来越多人使用ipv6进行通信,如果仅仅让服务器支持ipv4,......
  • 一口气搞懂分库分表 12 种分片算法,大厂都在用
    大家好,我是小富~前言本文是《ShardingSphere5.x分库分表原理与实战》系列的第五篇文章,我们一起梳理下ShardingSphere框架中的核心部分分片策略和分片算法,其内部针为我们提供了多种分片策略和分片算法,来应对不同的业务场景,本着拿来即用的原则。这次将详细介绍如何在ShardingSpher......
  • 一文搞懂JavaEE的接口
    在JavaEE(JavaEnterpriseEdition)开发环境中,编程意义上的“接口”(interface)和API接口虽然都涉及接口的概念,但它们属于不同层面的术语。1.编程意义上的“接口”(interface)在Java编程语言中,接口(interface)是一种引用类型,它是方法的集合,这些方法被定义在接口中,但没有实现(即没有方法......
  • drf : 通用视图类和(GenericAPIView)5个视图扩展类,九个视图子类,视图集。
    视图RESTframework提供了众多的通用视图基类与扩展类,以简化视图的编写。APIViewrest_framework.views.APIViewAPIView是RESTframework提供的所有视图的基类,继承自Django的View父类。GenericAPIView使用[通用视图类]继承自APIVIew,主要增加了操作序列化器和数据库查询的方......
  • 一文彻底搞懂Redis底层数据结构
    文章目录1.数据结构与数据类型的关系2.底层数据结构详解2.1SDS:简单动态字符串2.2双端链表2.3压缩列表2.4哈希表2.5整数集合2.6跳表2.7quicklist2.8listpack1.数据结构与数据类型的关系Redis是一个基于内存的数据存储系统,它支持多种数据结构和数据类型,......
  • 一篇文章搞懂并设计循环队列
    目录1.为什么使用循环队列2.循环队列组成为什么要只使用size-1个空间存储?3.循环队列的元素进出3.1队尾加入元素3.2队头删除元素3.3取出队头元素3.4取出队尾元素1.为什么使用循环队列“假溢出”——》出队列会空出存储空间,无法再次利用如图:索引为0和1的空......