当前位置: 首页 > news >正文

python中父类和子类继承学习

python为啥要使用继承

1. **代码复用**:子类可以继承父类的方法和属性,避免了重复编写相同的代码,提高了代码的复用性。
2. **建立层次结构**:通过继承可以清晰地表示类之间的层次关系,使代码结构更有条理。
3. **扩展和修改功能**:子类可以在父类的基础上进行扩展和修改,添加新的特性或改变某些行为。
4. **提高开发效率**:利用继承可以快速构建复杂的类体系,减少开发时间和工作量。

如何在 Python 中实现继承

  1. 定义子类:创建一个新的类,指定它继承自某个父类。
  2. 在子类中可以重写父类方法:根据需要对父类的方法进行修改或扩展。
class Parent:def method(self):print("这是父类的方法")class Child(Parent):def method(self):print("这是子类的方法")
#Child` 类继承自 `Parent` 类,并在子类中重写了父类的方法。

super()详细解释

  • super()的作用是在子类中调用父类的方法。
  • super(_class_, <first argument>:第一个参数是子类,第二个参数是子类实例。
  • super(type):返回一个未绑定的超级对象。
  • super(type, obj):返回一个绑定的超级对象,要求objtype的实例。
  • super(type, type2):返回一个绑定的超级对象,要求type2type的子类。
class Parent:def __init__(self):self.attribute = "父类属性"class Child(Parent):def __init__(self):super().__init__()  # 调用父类的 __init__ 方法self.child_attribute = "子类属性"# 创建子类实例
child = Child()
print(child.attribute)  # 输出: 父类属性
print(child.child_attribute)  # 输出: 子类属性

父类和子类

  1. 如果类中不定义__init__,调用父类superclass的__init__
  2. 如果类继承父类也需要定义自己的__init_,就需要在当前类的__init_调用一下父类__init__
  3. 如何调用父类__init__:
    super().init(参数)
    super(类名,对象).init(参数)
  4. 如果父类有eat(),子类也定义一个eat方法,默认搜索的原则:先找当前类,再去找父类
  • super().__init__()用于在子类的__init__方法中调用父类的__init__方法,这样可以确保父类的初始化操作也被执行。
  • 然后,子类可以再进行自己的额外初始化操作,添加自己的属性。
  1. 如果类中不定义__init__,调用父类superclass__init__
    在Python中,如果子类没有定义自己的__init__方法,那么它将自动调用父类的__init__方法。这是因为__init__方法是一个特殊的方法,用于在创建类的新实例时初始化对象。

    class Parent:def __init__(self):print("Parent __init__ called")class Child(Parent):pass  # 没有定义 __init__c = Child()  # 这将调用 Parent 的 __init__
    
  2. 如果类继承父类也需要定义自己的__init__,就需要在当前类的__init__调用一下父类__init__
    当子类需要执行一些额外的初始化操作时,它通常会定义自己的__init__方法。在这种情况下,为了确保父类的初始化代码也被执行,子类应该在其__init__方法中调用父类的__init__方法。

    class Parent:def __init__(self):print("Parent __init__ called")class Child(Parent):def __init__(self):super().__init__()  # 调用父类的 __init__print("Child __init__ called")c = Child()  # 这将先调用 Parent 的 __init__,然后调用 Child 的 __init__
    
  3. 如何调用父类__init__

    • 使用super()来调用父类的方法。这是Python 3中推荐的方式。
    • super().__init__():这种方式不需要指定类名和对象,Python会自动处理。
    • super(类名, self).__init__():这种方式在你需要明确指定类名和对象时使用,但在Python 3中不推荐使用。
    class Child(Parent):def __init__(self):super().__init__()  # 推荐的方式# 或者super(Parent, self).__init__()  # 不推荐的方式
    
  4. 如果父类有eat(),子类也定义一个eat方法,默认搜索的原则:先找当前类,再去找父类
    在Python中,当调用一个方法时,会先在当前类的命名空间中查找该方法,如果找不到,再沿着继承链向上查找。

    class Parent:def eat(self):print("Parent is eating")class Child(Parent):def eat(self):print("Child is eating")c = Child()
    c.eat()  # 这将调用 Child 的 eat 方法
    
  5. override(覆盖)
    当子类提供一个与父类同名的方法时,这种行为称为方法覆盖(override)。这允许子类改变或扩展父类的行为。

    class Parent:def greet(self):print("Hello from Parent")class Child(Parent):def greet(self):print("Hello from Child")c = Child()
    c.greet()  # 这将调用 Child 的 greet 方法,即使它继承自 Parent
    

父类提供的方法不能满足子类的需求,就需要在子类中定义一个同名的方法,这种行为:重写

相关文章:

python中父类和子类继承学习

python为啥要使用继承 1. **代码复用**&#xff1a;子类可以继承父类的方法和属性&#xff0c;避免了重复编写相同的代码&#xff0c;提高了代码的复用性。 2. **建立层次结构**&#xff1a;通过继承可以清晰地表示类之间的层次关系&#xff0c;使代码结构更有条理。 3. **扩展…...

Linux——GPIO输入输出裸机实验

学习了正点原子Linux环境下的GPIO的输入输出的裸机实验学习&#xff0c;现在进行一下小结&#xff1a; 启动文件start.S的编写 .global _start .global _bss_start _bss_start:.word __bss_start.global _bss_end _bss_end:.word __bss_end_start:/*设置处理器进入SVC模式*/m…...

华为鸿蒙HarmonyOS NEXT升级HiCar:打造未来出行新体验

随着科技的不断进步&#xff0c;智能出行已成为我们生活中不可或缺的一部分。华为凭借其在智能科技领域的深厚积累&#xff0c;推出了全新的鸿蒙HarmonyOS NEXT系统&#xff0c;旨在为用户打造一个“人车家”的无缝协同出行体验。这一系统的核心亮点之一&#xff0c;就是其内置…...

【项目组件】第三方库——websocketpp

目录 第三方协议&#xff1a;websocket websocket简介 websocket特点 websocket协议切换 websocket协议格式段 websocketpp库介绍 endpoint server connection websocketpp库搭建服务器流程 基本框架实现 业务处理回调函数的实现 http_callback open_callback …...

计算机23级数据结构上机实验(第3-4周)

A 二叉树删除子树 编写程序对给定二叉树执行若干次删除子树操作&#xff0c;输出每次删除子树后剩余二叉树的中根序列。二叉树结点的数据域值为不等于0的整数。每次删除操作是在上一次删除操作后剩下的二叉树上执行。 输入格式: 输入第1行为一组用空格间隔的整数&#xff0c;表…...

【大数据学习 | HBASE高级】region split机制和策略

1. region split机制 ​ HRegionServer拆分region的步骤是&#xff0c;先将该region下线&#xff0c;然后拆分&#xff0c;将其子region加入到hbase:meta表中&#xff0c;再将他们加入到原本的HRegionServer中&#xff0c;最后汇报Master。 split前&#xff1a;hbase:meta表有…...

flink实战 -- flink SQL 实现列转行

在 SQL 任务里面经常会遇到一列转多行的需求,下面就来总结一下在 Flink SQL 里面如何实现列转行的,先来看下面的一个具体案例. 需求 原始数据格式如下: namedatatest[{"content_type":"flink","url":"111"},{"content_type&quo…...

React中右击出现自定弹窗

前言 在react中点击右键,完成阻止浏览器的默认行为,完成自定义的悬浮框(Menu菜单). 版本 "react": "^18.2.0", "umijs/route-utils": "^4.0.1", "antd": "^5.18.1", "ant-design/pro-components": &q…...

Unity类银河战士恶魔城学习总结(P128 Switch UI with KeyBoard用键盘切换UI)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址&#xff1a;https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了用键盘切换角色UI&#xff0c;技能树UI&#xff0c;合成面板UI和设置UI UI.cs 1. 变量与字段 characterUI&#xff0c;skill…...

基于Springboot+微信小程序的急救常识学习系统 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 该系统…...

【云计算解决方案面试整理】3-7主流云计算平台、云计算架构、安全防护

准备面云计算解决方案的岗位,整理了一些,也请大佬们指点。 文档分为 云计算基础概念、云计算技术原理、主流云计算平台(以天翼云为例)、云计算架构(弹性设计、高可用设计、高性能设计)、安全防护几个方面。 三、主流云计算平台 1.阿里云云计算平台 强大的计算能力:拥有…...

数据库范式、MySQL 架构、算法与树的深入解析

一、数据库范式 在数据库设计中&#xff0c;范式是一系列规则&#xff0c;用于确保数据的组织和存储具有良好的结构、完整性以及最小化的数据冗余。如果不遵循范式设计&#xff0c;数据可能会以平铺式罗列&#xff0c;仅使用冒号、分号等简单分隔。这种方式存在诸多弊端&#…...

设计模式之责任链模式(Chain Of Responsibility)

一、责任链模式介绍 1、责任链模式介绍 职责链模式(chain of responsibility pattern) 定义: 避免将一个请求的发送者与接收者耦合在 一起&#xff0c;让多个对象都有机会处理请求。将接收请求的对象连接成一条链&#xff0c;并且沿着这条链 传递请求&#xff0c;直到有一个对…...

SQLite 全文检索:快速高效的文本查询方案

文章目录 什么是全文检索&#xff1f;如何启用 FTS&#xff1f;插入数据执行全文检索关联原始表与 FTS 表数据更新结论 说明: 本文以博客内容全文检索为例。 什么是全文检索&#xff1f; 全文检索是指对文本数据进行索引和查询的一种技术。与常规的 LIKE 查询不同&#xff0c…...

【微信小程序】报修管理

一、报修管理 报修管理是为方便业主联系维修师傅的一个服务&#xff0c;业主确认需要维修的房到后&#xff0c;再指定维修项目以及上门的时间待待师傅联系上门服务即可。 1.1 在线报修 业主通过在线的方式填写报修的信息&#xff0c;包括房屋信息、维修项目、联系电话、上门…...

C++——视频问题总结

1、C和C的区别 CC面向过程对象注重程序的实现逻辑程序的整体设计内容C语言采用了一种有序的编程方法——结构化编程&#xff1a;将一个大型程序分解为一个个小型的&#xff0c;易于编写的模块&#xff0c;所有模块有序调动&#xff0c;形成了一个程序的完整的运行链C将问题分解…...

Ubuntu24.04 network:0 unclaimed wireless adapter no found

前言&#xff1a; 所遇问题原因在于&#xff0c;折腾显卡cuda版本&#xff0c;导致nvidia驱动没了&#xff0c;使用sudo ubuntu-drivers autoinstall后&#xff0c;驱动有了&#xff0c;但是reboot后无线网卡无法识别&#xff0c;此外usb无线网络也无法使用&#xff0c;ifconfi…...

Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题

问题 这个报错是出现在Java Spring boot项目中&#xff0c;使用MyBatis-Plus通过创建的实体类对数据库的操作过程中&#xff0c;通过实体创建数据库表是没有问题的&#xff0c;而在接口调用服务类操作数据库的时候&#xff0c;会出现报错。报错详情如下&#xff1a; 服务请求异…...

深入浅出 ChatGPT 底层原理:Transformer

Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年&#xff0c;人工智能技…...

opc da 服务器数据 转 IEC61850项目案例

目录 1 案例说明 2 VFBOX网关工作原理 3 应用条件 4 查看OPC DA服务器的相关参数 5 配置网关采集opc da数据 6 用IEC61850协议转发数据 7 网关使用多个逻辑设备和逻辑节点的方法 8 在服务器上运行仰科OPC DA采集软件 9 案例总结 1 案例说明 在OPC DA服务器上运行OPC …...

番茄小说下载器:打造个人数字书库的终极解决方案

番茄小说下载器&#xff1a;打造个人数字书库的终极解决方案 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 在数字阅读时代&#xff0c;你是否曾因网络不稳定而中断阅读&#xff1f;是否想…...

vscode过滤文件

const fs require(fs); const { exec } require(child_process);// 在这里输入你的关键词&#xff0c;每行一个 const keywordsStr BV1wmXwBCEsZ BV1MR6wBREhY BV1DuoSYuEpX ; // // 将多行字符串按换行符分割&#xff0c;过滤掉空行 const keywords keywordsStr.trim()…...

麒麟系统离线部署OnlyOffice,我踩过的那些坑(附Docker镜像包和完整配置)

麒麟系统离线部署OnlyOffice实战避坑指南 在国产化替代浪潮中&#xff0c;麒麟系统作为主流国产操作系统&#xff0c;正逐步应用于各类关键信息基础设施领域。而办公软件作为日常刚需&#xff0c;如何在麒麟系统上实现高效、安全的文档协作成为许多技术团队面临的挑战。OnlyOff…...

OriginPro 2023 相关性热图插件 CorrelationPlot 保姆级安装与配置指南(附资源下载)

OriginPro 2023 CorrelationPlot插件全流程配置指南&#xff1a;从零基础到高效科研可视化 科研数据处理中&#xff0c;相关性热图&#xff08;Correlation Plot&#xff09;是揭示变量间关联强度的利器。对于非编程背景的研究者而言&#xff0c;OriginPro的CorrelationPlot插件…...

喜马拉雅FM音频下载器:跨平台VIP专辑下载完整指南

喜马拉雅FM音频下载器&#xff1a;跨平台VIP专辑下载完整指南 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 在数字音频内容日益丰…...

手把手调试:用ADC0804读取PT100变送器信号,51单片机程序里的那些‘坑’怎么避?

51单片机实战&#xff1a;PT100温度检测系统避坑指南与ADC0804深度调试 当我们需要在工业控制或高精度测量场景中实现温度监控时&#xff0c;PT100铂电阻因其出色的线性度和稳定性成为首选传感器。然而&#xff0c;将PT100与51单片机结合使用时&#xff0c;从信号采集到温度显示…...

别再让API请求拖慢你的Python应用:用cachetools实现LRU缓存,性能提升实测

别再让API请求拖慢你的Python应用&#xff1a;用cachetools实现LRU缓存&#xff0c;性能提升实测 当你的Python应用开始频繁调用外部API或进行重复计算时&#xff0c;性能瓶颈往往悄然而至。想象一下&#xff0c;每次用户请求都需要等待数秒的API响应&#xff0c;或是相同的数据…...

你的滤波器为什么‘跑偏’了?深入理解幅频特性中的通带波纹与阻带衰减

你的滤波器为什么‘跑偏’了&#xff1f;深入理解幅频特性中的通带波纹与阻带衰减 当你在示波器上看到精心设计的滤波器输出波形出现意料之外的畸变时&#xff0c;是否曾怀疑过自己的数学推导&#xff1f;那些在仿真软件中完美运行的参数&#xff0c;为何在实际电路中总会出现微…...

如何通过智能菜单栏管理让Mac界面焕然一新:Hidden Bar深度使用指南

如何通过智能菜单栏管理让Mac界面焕然一新&#xff1a;Hidden Bar深度使用指南 【免费下载链接】hidden An ultra-light MacOS utility that helps hide menu bar icons 项目地址: https://gitcode.com/gh_mirrors/hi/hidden 在macOS系统中&#xff0c;菜单栏图标堆积是…...

2026年管棒材检测系统十强厂商最新深度评测

进入2026年下半年&#xff0c;全球管棒材检测系统行业正式迈入高质量发展攻坚期&#xff0c;行业发展主线聚焦于AI多模态融合与全流程数字化转型&#xff0c;技术迭代呈现“多技术协同、全场景适配”的核心特征。其中&#xff0c;相控阵超声&#xff08;PAUT&#xff09;、全聚…...