python - 子类为什么调用父类的方法

news2024/9/22 21:26:33

菜鸟教程 - 面向对象icon-default.png?t=O83Ahttps://www.runoob.com/python3/python3-class.html为什么写这个呢 ,因为很多时候,事情很简单,但我往往记住了使用方式,忘记了使用原因,也因为自己看到super()时,也想问为什么要用super()

菜鸟教程中有一个继承例子 

#!/usr/bin/python3
 
#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s 说: 我 %d 岁。" %(self.name,self.age))
 
#单继承示例
class student(people):
    grade = ''
    def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆写父类的方法
    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级"%(self.name,self.age,self.grade))
 
 
 
s = student('ken',10,60,3)
s.speak()

people.__init__(self,n,a,w)  调用父类的构造函数,此时我的问题是能不能这么写

class student(people):

    def __init__(self, n, a, w, g):
        self.name = n
        self.age = a
        self.__weight = w
        self.grade = g

    # 覆写父类的方法
    def speak(self):
        print("%s 说: 我 %d 岁了,我在读 %d 年级" % (self.name, self.age, self.grade))

这两种写法,运行结果没区别,那为什么要使用 people.__init__(self,n,a,w) 这种写法

回顾一下继承的作用

继承允许一个类(称为子类或派生类)从另一个类(称为父类或基类)继承属性和方法。这样可以重用代码,提高代码的模块化和可维护性。

结论:

1. 重用代码意味着子类不需要与父类的属性重复,因此Student 构造函数只需写self.grade = g,那么问题来了,怎么初始化父类的方法,于是有了 people.__init__(self,n,a,w) 调用了父类的构造函数,而且减少了代码,提高模块化

2. 为什么不用第二种方式,因为子类重复定义属性

问题

当然这么使用引发了其他问题,比如 多继承问题

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

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

相关文章

重生之我们在ES顶端相遇第16 章 - Lucene 写入流程

文章目录 前言写入流程图refreshRefresh 触发时机Translog FlushMerge 前言 上一章我们介绍了倒排索引的数据结构。 本章我们将深入介绍 Lucene 写入流程。 该知识点在面试中比较常问,也是理解 ES 必须掌握的知识点。 写入流程图 在第 14 章,我在介绍…

web基础—dvwa靶场(七)SQL Injection

SQL Injection(SQL注入) SQL Injection(SQL注入),是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的。SQL注入漏洞的危害是巨大的,常常会导致…

有毒有害气体检测仪的应用和性能_鼎跃安全

随着现代工业的不断发展和扩张,越来越多的企业涉及到有毒有害气体的生产、使用和处理。工业规模的扩大导致有毒有害气体的排放量增加,同时也增加了气体泄漏的风险。在发生火灾、爆炸或危险化学品泄漏等紧急事件时,救援人员需要迅速了解现场的…

自动化立体仓库与堆垛机单元的技术参数

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 新书《智能物流系统构成与技术实践》人俱乐部 完整版文件和更多学习资料,请球友到知识星球【智能仓储物流技术研习社】自行下载。 这份文件是一份自动化立体仓库与堆垛机单…

Java内存泄漏排查

内存泄漏排查 1. 堆内存快照导出2. 导入内存分析工具 1. 堆内存快照导出 获取 Java 进程 ID Windows:执行 jps 命令,或任务管理器查看,又或者执行 tasklist 命令。 注意:当有多个 Java 进程时,任务管理器或 tasklist |…

SpringSecurity6.x整合手机短信登录授权

前言:如果没有看过我的这篇文章的Springboot3.x.x使用SpringSecurity6(一文包搞定)_springboot3整合springsecurity6-CSDN博客需要看下,大部分多是基于这篇文章的基础上实现的。 明确点我们的业务流程: 需要有一个发送短信的接口&#xff0…

springboot小区物业报修管理系统-计算机毕业设计源码03418

摘 要 本课题的研究对象是小区物业报修管理系统app的设计与实现,该系统实现了用户管理、业主信息管理、报修信息管理、维修记录管理、通知公告管理等功能。本系统在设计上,考虑到系统内容以及系统的受众群体,在系统的美工方面采用了比较正规的…

Automated Construction of Theme-specific Knowledge Graphs

文章目录 题目摘要引言相关工作方法实验消融研究结论 题目 自动构建主题特定知识图谱 论文地址:https://arxiv.org/pdf/2404.19146 摘要 尽管知识图谱 (KG) 广泛应用于问答、智能对话系统等各种任务,但现有的 KG 面临两大挑战:信息粒度有限和…

C语言深入理解指针(四)

目录 字符指针变量数组指针变量数组指针变量是什么数组指针变量怎么初始化 二维数组传参的本质函数指针变量函数指针变量的创建函数指针变量的使用代码typedef关键字 函数指针数组转移表 字符指针变量 字符指针在之前我们有提到过,(字符)&am…

5.MySQL表的约束

目录 表的约束空属性(非空约束)默认值(default约束)列描述(comment)zerofill主键(primary key约束)自增长唯一键(unique约束)外键 表的约束 如果我自由自在的…

MySQL(日志)

日志 日志分为三种: undo log (回滚日志):用于事务回滚和MVCC redo log (重做日志):用于故障恢复 binlog (归档日志):用于数据备份和主从复制 undo log undo…

qt-C++笔记之作用等同的宏和关键字

qt-C笔记之作用等同的宏和关键字 code review! Q_SLOT 和 slots: Q_SLOT是slots的替代宏,用于声明槽函数。 Q_SIGNAL 和 signals: Q_SIGNAL类似于signals,用于声明信号。 Q_EMIT 和 emit: Q_EMIT 是 Qt 中用于发射…

Tomcat 靶场攻略

CVE-2017-12615 步骤一:环境搭建 cd vulhub/tomcat/CVE-2017-12615 docker-compose up -d docker ps 步骤二:漏洞复现 http://192.168.10.190:8080/ 步骤二:首页进行抓包 Tomcat允许适⽤put⽅法上传任意⽂件类型,但不允许js…

安卓13去掉下拉菜单的Dump SysUI 堆的选项 android13删除Dump SysUI 堆

总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析3.1 位置13.2 位置24.代码修改5.编译6.彩蛋1.前言 客户需要去掉下拉菜单里面的Dump SysUI 堆图标,不让使用这个功能。 2.问题分析 android的下拉菜单在systemui里面,这里我们只需要定位到对应的添加代…

【优选算法之二分查找】No.5--- 经典二分查找算法

文章目录 前言一、二分查找模板:1.1 朴素二分查找模板1.2 查找区间左端点模板1.3 查找区间右端点模板 二、二分查找示例:2.1 ⼆分查找2.2 在排序数组中查找元素的第⼀个和最后⼀个位置2.3 搜索插⼊位置2.4 x 的平⽅根2.5 ⼭脉数组的峰顶索引2.6 寻找峰值…

Linux自主学习篇

用户及权限管理 sudo 是 "superuser do" 的缩写,是一个在类 Unix 操作系统(如 Linux 和 macOS)中使用的命令。它允许普通用户以超级用户(root 用户)的身份执行命令,从而获得更高的权限。 useradd…

多模态交互才是人机交互的未来

交互方式 在探讨文字交流、语音交流和界面交流的效率时,我们可以看到每种方式都有其独特的优势和局限性。文字交流便于记录和回溯,语音交流则在表达情绪和非语言信息方面更为高效,而界面交流则依赖于图形用户界面(GUI&#xff09…

<<编码>> 第 16 章 存储器组织(4)--内存 示例电路

内存内部结构 info::操作说明 译码器用于写入, 操作同上 选择器用于输出, 操作同上 地址信号同时控制译码器和选择器, 注意地址的高位在右(比如 001 实际是 100, 选择的是 Q6 和 I6) 缺省情况下, 内部数据全是 0. 读者可先通过译码器写入, 再通过选择器输出 primary::在线交…

初学者的鸿蒙多线程并发之 TaskPool 踩坑之旅

1. 背景 目标群体:鸿蒙初学者 版本:HarmonyOS 3.1/4.0 背景:鸿蒙 App 的全局路由管理功能,需要在 App 启动时初始化对 raw 下的相关配置文件进行读取、解析并缓存。App 启动时涉及到了大量模块的初始化,好多模块都涉…

【machine learning-15-如何判定梯度下降是否在收敛】

我们在运行梯度下降的时候,如何判定梯度下降是否在收敛呢? 梯度下降的时候,权重和偏置根据如下的公式同时更新: 程序要做的就是更新w 和 b,让梯度下降尽快的收敛,但是如何判定正在收敛呢? 方法…