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

Python进阶-----面对对象4.0(面对对象三大特征之--继承)

目录

前言:

Python的继承简介

1.什么是继承 

2.继承的好处

 3.object类

继承的相关用法

 1.继承的定义与法则

2.对继承的重写

 3.(单继承)多层继承

4.多继承

 5.多继承重写时调用父类方法


前言:

        在讲之前,我想说说中国古代历史。我们都知道在古代,君王的传位是遵循嫡长子继承制的,皇帝的位置一般是传给太子的,那在继承的过程中也就是说皇帝的所有权利以及所拥有的东西都会传给下一个皇帝,但是相关的规矩一般是不会变化的,比如说朝代的国号以及一些重要制度,但是这不代表新皇帝不可以去改革,比如战国时期秦国的商鞅变法。

        好了这里讲这么多,我们对“继承”这个词有点理解吧,在Python中也基本上是遵循这样的规则的,废话不多说,一起来看看吧!!!

Python的继承简介

1.什么是继承 

        继承嘛,顾名思义就是后者继承先者的某些特征和属性,比如说:儿子继承老爸的股份,太子继承皇位等等。在Python中,被继承的类叫做父类,继承的类叫做子类,子类继承父类的属性和方法

2.继承的好处

  • 继承可以解决重复类的代码造成的冗余

  • 继承可以提高代码的复用性

 3.object类

在python中所有的类都继承于object,object就是基类,超类 ,所以object类是所有类的父类

class A:pass
class B(object):pass
#object类是所有类的父类,也就是说如果一个类没有指定继承哪个类,那么就会默认继承object类
#所以A和B类都是继承object类,是一样的

我们可以去通过dir()  来获取object类具有的方法,如下所示:

class A(object):def __init__(self,name,age):self.name=nameself.age=age
a=A('Jack',15)
print(a)
#输出结果:<__main__.A object at 0x00000216806D0460>

继承的相关用法

 1.继承的定义与法则

定义

class Son(Father):

 法则

一般来说,子类可以继承父类的属性和方法,但是这些属性和方法都是公有的,不是私有化的,所以父类的私有化属性和方法是继承不了的

示例:

class Oldking(object):def __init__(self,name,clothes,seal,mausoleum):self.name=nameself.clothes=clothesself.seal=sealself.__mausoleum=mausoleum#私有化属性def dynasty(self):print('唐朝')def __years(self): #私有化方法print('贞观之治')class Newking(Oldking):passt=Newking('武则天','龙袍','玉玺','帝陵')
print(t.name,t.clothes,t.seal) #这里无法输出  帝陵,因为被父类私有化了
t.dynasty()  #同时也无法所以__years() 方法,这个方法也是私有化了
#输出结果:武则天 龙袍 玉玺
#         唐朝

2.对继承的重写

        新皇帝可以继承老皇帝的权利,那当然可以进行相关制度的改革,或者说是年号的改革,比如说唐太宗年号为贞观之治,武则天的是贞观遗风。所以我们在Python中子类也可以对父类继承的东西进行重写。

class Old(object):def __init__(self):self.king='隋炀帝'self.clothes='龙袍'def dynasty(self):print('这是隋朝')class New(Old):def __init__(self):self.king='唐高祖'self.clothes=Old().clothesdef dynasty(self):print('这是唐朝')
t=New()
print(t.king,t.clothes)
t.dynasty()
#输出结果:唐高祖 龙袍
#         这是唐朝

这个示例可以看出,重写了朝代和皇帝的名字,然而对龙袍进行了保留继承

 3.(单继承)多层继承

        多层继承就涉及到父类继承其父类,子类又继承父类,就是一种继承的嵌套,也就是孙子继承父亲的,父亲继承爷爷的。当然在每次继承的过程中也是可以对相关内容进行重写。在继承过程中,属性的查找顺序是先从自身属性去查找,如果找不到就去父类去查找,如果父类还找不到就去爷爷类查找,以此类推……

        顺序:对象>子类>父类>父父类

示例:

class Grandpa(object):def __init__(self):self.__name='史蒂夫'self.money=100def fun(self):print('传家宝:尚方宝剑')
class Father(Grandpa):def __init__(self):self.money=2**10
class Son(Father):def college(self):print('GUET')
AJ=Son()
print(AJ.money)
AJ.fun()
AJ.college()
#输出结果:
# 1024
# 传家宝:尚方宝剑
# GUET

这个也是很好理解的,如果父类没有特定设置私有化属性的话,子类会一一继承,如果一直嵌套下去的话,到最后子类具有的属性和特点会非常多,这就是一个累积过程。当我们去创建一个实例对象,然后去查找这个实例对象相关属性和方法时,这会依次向父类查找,直到找到为止。

4.多继承

        多继承是表示一个子类具继承个父类,也就是说一个儿子有多个父亲(到处认爹) 一个子类继承多个父类的东西。

继承顺序:在继承中出现相同方法则继承顺序是从左到右

示例1: 

class Father0(object):def fun(self):print('有钱')
class Father1(object):def fun(self):print('穷')
class Son0(Father0,Father1):pass
class Son1(Father1,Father0):pass
Jack=Son0()
jb=Son1() #输出结果:有钱
Jack.fun()
jb.fun() #输出结果:穷

在多继承中,我们可以去通过__mro__方法去查看继承的属性,(从左到右)

示例2: 

class G:pass
class E(G):pass
class F(G):pass
class B(E):pass
class C(F):pass
class D(G):pass
class A(B, C, D):pass
son=A()
print(A.__mro__) #查看相同的方法继承顺序

输出结果:

顺序为:A->B->E->G->C->F->D->object

 5.多继承重写时调用父类方法

 

在重写多/但继承父类的方法时,但是又想调用父类的方法,这时候就用到super() 方法

 super() 方法是按照上面所说的继承顺序来执行的,也就是执行第一个继承的父类的方法

class Sheep(object):def sound(self):print('咩咩咩')
class Cat(object):def sound(self):print('喵喵喵')def animal(self):print('猫咪')
class Dog(Sheep):def animal(self):print('小狗')
class A(Dog,Cat):def sound(self):print('哈哈哈')super().sound() #调用(按照顺序)父类的方法
tt=A()
tt.sound()
#输出结果:哈哈哈
#        咩咩咩

可能会有些人疑惑,明明Dog没有定义sound() 方法,但是又为什么可以找到呢,其实是Dog继承了Sheep类,是在这里找到了sound() 方法

其实如果我们想去直到调用哪一个父类的方法,我们可以直接去声明调用:

父类.方法(self)

class Cat(object):def sound(self):print('喵喵喵')def animal(self):print('猫咪')
class Dog(object):def animal(self):print('小狗')
class A(Dog,Cat):def sound(self):Cat.sound(self)####print('哈哈哈')
tt=A()
tt.sound()
print(A.__bases__)
#输出结果:喵喵喵
#        哈哈哈

好了,这一期就到这里了先,我们下一期再见~~~

分享一张壁

 

相关文章:

Python进阶-----面对对象4.0(面对对象三大特征之--继承)

目录 前言&#xff1a; Python的继承简介 1.什么是继承 2.继承的好处 3.object类 继承的相关用法 1.继承的定义与法则 2.对继承的重写 3.&#xff08;单继承&#xff09;多层继承 4.多继承 5.多继承重写时调用父类方法 前言&#xff1a; 在讲之前&#xff0c;我想说说中…...

九龙证券|利好政策密集发布,机构扎堆看好的高增长公司曝光

新能源轿车销量和保有量快速增长&#xff0c;带来了充电桩商场的微弱需求。 日前&#xff0c;商务部部长王文涛表明&#xff0c;本年将在落实好方针的一起&#xff0c;活跃出台新方针办法&#xff0c;比方辅导当地展开新能源轿车下乡活动&#xff0c;优化充电等使用环境&#x…...

stm32CubeIDE FMC 驱动LCD(8080)

一&#xff0c;TFT屏硬件接口16位&#xff0c;80并口。二&#xff0c;FMC介绍。FSMC&#xff08;Flexible Static Memory Controller&#xff09;&#xff0c;译为灵活的静态存储控制器。STM32F1 系列芯片使用 FSMC 外设来管理扩展的存储器&#xff0c;它可以用于驱动包括 SRAM…...

Java 数据类型

数据类型用于对数据归类&#xff0c;以便开发者理解和操作。 基本数据类型 Java 确定了每种基本数据类型所占存储空间的大小&#xff0c;不会像其它语言那样随机器硬件架构的变化而变化&#xff0c;这使 Java 程序更具可移植性。 Java 中定义了如下的基本数据类型。 byte …...

Prometheus 监控云Mysql和自建Mysql(多实例)

本文您将了解到 Prometheus如何配置才能监控云Mysql(包括阿里云、腾讯云、华为云)和自建Mysql。 Prometheus 提供了很多种Exporter&#xff0c;用于监控第三方系统指标&#xff0c;如果没有提供也可以根据Exporter规范自定义Exporter。 本文将通过MySQL server exporter 来监控…...

Vue3中的h函数

文章目录简介简单使用参数使用计数器进阶使用函数组件插槽专栏目录请点击 简介 众所周知&#xff0c;vue内部构建的其实是虚拟DOM&#xff0c;而虚拟DOM是由虚拟节点生成的&#xff0c;实质上虚拟节点也就是一个js对象事实上&#xff0c;我们在vue中写的template,最终也是经过…...

阿尔法开发板 IMX6ULL 说明

一. IMX6ULL开发板 IMX6ULL开发板即正点原子的阿尔法(ALPHA)开发板&#xff0c;采用恩智浦芯片&#xff0c;cortex-A7架构的。 二. IM6ULL开发板说明 1. IO说明 对于IMX6ULL芯片&#xff0c;一个IO对应两个寄存器&#xff0c;第一个寄存器负责配置其复用功能&#xff0c;…...

Altium Designer19 #学习笔记# | 基础应用技巧汇总

全文目录一.元件符号库二.元件封装库1.AD09 集成元件库/封装库三.电路原理图1. 巧用查找"相似对象功能"1.1 查找相同元件1.2. 查找相同文本1.3. 查找相同网络 &#xff1a;E - S - C四.PCB原理图【AD PCB模式下的常用快捷键】PCB视图放大/缩小PCB视图左/右移动PCB切换…...

Python 元类编程实现一个简单的 ORM

概述 什么是ORM?    ORM全称“Object Relational Mapping”&#xff0c;即对象-关系映射&#xff0c;就是把关系数据库的一行映射为一个对象&#xff0c;也就是一个类对应一个表&#xff0c;这样&#xff0c;写代码更简单&#xff0c;不用直接操作SQL语句。 现在我们就要实…...

《C++ Primer Plus》第18章:探讨 C++ 新标准(7)

C11 新增的其他功能 C11 增加了很多功能&#xff0c;本书无法全面介绍&#xff1b;另外&#xff0c;本书编写期间&#xff0c;其中很多功能还未得到广泛实现。然而&#xff0c;有些功能有必要简要地介绍一下。 并行编程 当前&#xff0c;为提高计算机性能&#xff0c;增加处…...

Redis学习(二):Redis安装测试

概述 Redis是什么 Redis, Remote Dictionary Server, 即远程字典服务。免费开源的数据库。 由C语言编写&#xff0c;支持网络&#xff0c;可基于内存亦可持久化的日志型、KV数据库&#xff0c;并提供所种语言的API。 Redis能干嘛 用于内存存储&#xff0c;持久化。rdb、ao…...

Vector - CAPL - 简介及数据结构

对于想进入车载行业或者已经在车载行业工作的朋友对于CAPL这个词都会相当的熟悉&#xff0c;都知道他是做车载网络测试脚本的语言&#xff0c;并且跟C有点类似&#xff0c;但是它到底是什么呢&#xff1f;CAPL全称&#xff08;Communication Access Programming Language&#…...

20230304英语学习

What Would Happen if the Moon Disappeared Tomorrow? 如果明天月球消失了会怎样&#xff1f; The closest object to our planet, the Moon, may seem like Earth’s little sibling.Since its birth, the satellite has mostly just hung around, playing gravitational t…...

【基础算法】单链表的OJ练习(3) # 移除链表元素 # 相交链表 #

文章目录前言移除链表元素相交链表写在最后前言 本章的OJ练习也是相对简单的&#xff0c;只要能够理解解题的思路&#xff0c;并且依照这个思路能够快速的写出代码&#xff0c;我相信&#xff0c;你的链表水平已经足够了。 对于OJ练习&#xff08;2&#xff09; : ->传送门…...

【自用】SpringBoot项目通用类整理

文章目录全局Json序列化Controller日志切面全局异常拦截GlobalExceptionHandlerApiResultBusinessExceptionResponseEntityUtil全局返回体包装MP自动填充接口文档配置类自定义Async异步线程池本文主要整理各类项目中通用的配置类、工具类&#xff0c;便于复查自用。 全局Json序…...

动态规划法(总述)多阶段决策最优化问题

动态规划: 研究最优控制问题提出的 该问题有n个输入&#xff0c;问题的解由这n个输入组成&#xff0c;这个子集必须满足事先给定的条件&#xff0c;这些条件称为约束条件&#xff0c;满足约束条件的可行解可能不只有一个为了衡量可行解的优劣&#xff0c;通常以一些函数的形式&…...

MySQL跨服务器数据映射

MySQL跨服务器数据映射环境准备1. 首先是要查看数据库的federated引擎 开启/关闭 状态2. 打开任务管理器&#xff0c;并重启mysql服务3. 再次查看FEDERATED引擎状态&#xff0c;引擎已启动映射实现问题总结在日常的开发中经常进行跨数据库进行查询数据。 同服务器下跨数据库进…...

利用反射实现通过读取配置文件对类进行实例化-课后程序(JAVA基础案例教程-黑马程序员编著-第十二章-课后作业)

【案例12-3】&#xff1a;利用反射实现通过读取配置文件对类进行实例化 【案例介绍】 1.案例描述 现在有一个项目&#xff0c;项目中创建了一个Person类&#xff0c;在Person类中定义了一个sleep()方法。在工程中还定义了一个Student类继承Person类&#xff0c;在Student类中…...

1.2 CSS文本属性

CSS Text(文本)属性&#xff1a; 定义文本外观&#xff0c;颜色&#xff0c;装饰&#xff0c;缩进&#xff0c;行间距来修饰文本 文本样式 文本缩进 text-indent文本水平对齐方式&#xff1a;text-align文本修饰&#xff1a;text-decoration行高 line-height CSS文本颜色属性…...

SpringCloud之认识微服务

文章目录一、传统项目转型二、走进 SpringCloud三、微服务项目搭建3.1 创建一个 SpringBoot 项目3.2 创建三个 Maven 子工程3.3 为子工程创建 application.yml3.4 引入依赖3.5 数据库 建库建表3.6 编写业务提示&#xff1a;以下是本篇文章正文内容&#xff0c;SpringCloud系列学…...

抖音数字资产管理方法论:构建个人内容沉淀系统的技术实践

抖音数字资产管理方法论&#xff1a;构建个人内容沉淀系统的技术实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback su…...

零基础轻松拿捏!魔珐星云青少年健康运动教学数字人搭建全流程指南

大家好&#xff01;本次给大家分享一款面向青少年体育教育的AI创意实践项目——青少年健康运动教学智能数字交互系统。本项目聚焦青少年体质健康痛点&#xff0c;围绕体育教学智能化升级需求&#xff0c;打造集健康知识教学、运动动作陪练、健康知识考核、运动能力评测于一体的…...

潮州东方轻奢风全屋高定找哪家

开篇引言根据《2026年中国全屋定制行业发展报告》&#xff0c;潮州市全屋定制市场规模同比增长38%&#xff0c;其中全屋高端定制细分市场同比增长52%。目前&#xff0c;潮州市家庭全屋定制需求占比72%&#xff0c;高端定制需求占比45%。为了帮助潮州市消费者选择合规、靠谱、差…...

WPF虚拟桌宠组件:可嵌入、高性能、工程化UI生命体

1. 这不是“桌面宠物”&#xff0c;而是一个可嵌入的WPF UI组件化生命体你可能在Windows XP时代见过那只晃着尾巴、偶尔打哈欠的3D小猫&#xff0c;也可能在Win10系统托盘里点开过一个会眨眼的像素狐狸——但那些是独立进程、是系统级小工具、是“看一眼就关掉”的轻量娱乐。而…...

PDF 可视化签名盖章页技术解析

本文是我在设备检测系统项目开发中,无设备检测的技术实现备忘录,记载实现过程。 本文以 PC 端页面 sign-pdf.vue 为主线,说明「无设备报检」在报告审批环节如何通过前后端协作,完成报告/记录 PDF 上的签名、印章、报告编号拖放定位,并在审批通过后由后端合并生成带签章的正…...

科华UPS电源全品类汇总:选型与场景适配指南

科华UPS电源作为国内智慧电能领域的主流产品&#xff0c;覆盖家用、办公、机房、工业等全场景&#xff0c;产品系列丰富、规格齐全&#xff0c;但多数用户在选型时&#xff0c;常因分不清系列差异、功率适配、架构类型而踩坑。本文系统汇总科华UPS电源的核心分类、主流系列、核…...

Claude端到端测试设计终极清单:覆盖17类非功能需求(含延迟敏感度分级、幻觉熔断阈值、多轮对话状态持久化验证)

更多请点击&#xff1a; https://kaifayun.com 第一章&#xff1a;Claude端到端测试设计的演进逻辑与核心范式 Claude端到端测试并非静态产物&#xff0c;而是随模型能力边界拓展、交互场景复杂化及可靠性要求升级而持续演化的工程实践。其演进逻辑根植于三个关键张力&#xf…...

通过Taotoken标准OpenAI协议实现分钟级集成现有代码

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 通过Taotoken标准OpenAI协议实现分钟级集成现有代码 1. 迁移背景与核心思路 许多开发团队在构建AI应用时&#xff0c;会直接使用O…...

基于STM32与LoRa的低功耗物联网气象站DIY全攻略

1. 项目概述&#xff1a;打造一个低功耗的家庭气象站前阵子想给家里的智能家居系统加点“环境感知”能力&#xff0c;琢磨着搞个能实时监测室外温湿度、风速风向的小玩意儿。市面上成品气象站要么数据出不来&#xff0c;要么功耗感人&#xff0c;不适合长期户外部署。于是&…...

Taotoken用量看板功能详解,助你洞察团队AI资源消耗模式

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken用量看板功能详解&#xff0c;助你洞察团队AI资源消耗模式 对于技术管理者或项目负责人而言&#xff0c;清晰了解团队的AI…...