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

Python---关联与继承

专栏:python
个人主页:HaiFan.
专栏简介:Python在学,希望能够得到各位的支持!!!

关联与继承

  • 前言
  • has a关联关系
  • is a继承关系
    • 子类不添加__init__
    • 子类添加__init__

前言

在这里插入图片描述

has a关联关系

has - a 是在一个类中使用了另一种自定义的类型。

看代码

import randomclass Road:def __init__(self,name,len):self.name = nameself.len = lenclass Car:def __init__(self,brand,speed):self.brand = brandself.speed = speeddef get_time(self,road):ran_time = random.randint(1,10)msg = f'{self.brand}品牌的车在{road.name}上以{self.speed}速度行驶了{ran_time}个小时'print(msg)def __str__(self):return f'{self.brand}品牌的\n速度{self.speed}'r = Road('nb',111)c = Car('shangtian',130)print(c)c.get_time(r)

这个代码中的 get_time中的road和r是一样的,指向同一块空间,如果在传参的时候,不传r对象,那么,get_time里面是没有name这个属性的,r可以.调用属性,road.也可以调用属性
在这里插入图片描述


在这里插入图片描述
我把这个r对象中的name进行更改,因为r和road指向的是同一块空间,所以,r.name改变之后,road.name也会改变


  1. has a
    一个类中使用了另一种自定义类型就是关联关系
    如上面代码中c对象中的参数是r对象

is a继承关系

is - a简单来说就是继承关系,类的父子继承关系。

子类不添加__init__

在以后的开发过程中,我们会碰到很多情况,比如,让我们写多个类:医生类,学生类等等,在每一个类里面,都会写名字,性别,年龄等,一个一个的类写是比较繁琐的,在这里,Python给出了解决办法

class Student:def __init__(self,name,age):self.name = nameself.age = agedef eat(self):print(f'{self.name}正在吃饭')class Doctoe:def __init__(self, name, age):self.name = nameself.age = agedef eat(self):print(f'{self.name}正在吃饭')

这个代码中,有着很多重复的代码,并且这些类都有一个共同的特征,那么就可以提取出来他们共同的部分,写做一个类,将其共同的特征都写入这个类中。这个类就是父类

class Person:def __init__(self,name,age):self.name = nameself.age = agedef eat(self):print(f'{self.name}正在吃饭')class Student:passclass Doctoe:passa = Student()a.eat()

在创建出a对象之后,这个对象是找不到eat这个方法的。
因为Student类中为pass
那么,如何让提取出来的共同特征在下面的类中都能体现出来呢?

这就用到了继承关系,把人这一类称为父类,把属于人这一类的类,称为子类。

class 父名字:pass
class 类名(父类名字):pass

在这里插入图片描述
为什么在继承之后,还会出现阴影?子类继承父类后,会受到父类的影响,因为父类的__init__有name和age参数,所以子类中也有这两个参数,所以会出现阴影

class Person:def __init__(self,name,age):self.name = nameself.age = agedef eat(self):print(f'{self.name}正在吃饭')class Student(Person):passclass Doctoe(Person):passa = Student('lise',19)
a.eat()

在这里插入图片描述


我们创建一个类,默认继承是object,在Python3中,我们不写(object),默认继承object

我们知道,Python代码是依次执行的,所以再上面的代码中,会先通过__new__魔术方法开辟一段空间,然后把空间传给__init__.


这个__new__是object的,如果自己没有就会先去父类找,父类没有,就会去object找,再比如__init__,Student类里面是没有这个魔术方法的,那么就会先去父类找。

本层找不到,就去上层找

子类添加__init__

lass Person:def __init__(self):self.name = 'lisi'self.age = 19def eat(self):print(f'{self.name}正在吃饭')def run(self):print(f'{self.namme}正在跑步')class Student(Person):def __init__(self):print('-------init')class Employee(Person):passclass Doctor(Person):passa = Student()

在这里插入图片描述
创建a对象,然后运行代码,会打印出执行__init__的结果。

如果再加一个a.eat()呢?
在这里插入图片描述
这就错了。
在这里插入图片描述


那么,如何调用父类的 __init__呢?

这里我们用到了 super关键字

在这里插入图片描述

如何调用父类 __init__

  1. super(). __init__(参数)
  2. super(类名,对象).__init__(参数)
class Person:def __init__(self):self.name = 'lisi'self.age = 19def eat(self):print(f'{self.name}正在吃饭')def run(self):print(f'{self.namme}正在跑步')class Student(Person):def __init__(self):print('-------init')super().__init__()
class Employee(Person):passclass Doctor(Person):passa = Student()

在这里插入图片描述


在这里插入图片描述


  1. 如果类中不定义 __init__,就调用父类的 __init__

  2. 如果类继承父类也需要定义自己的 __init__,就需要在当前类的 __init__调用一下父类 __init__

  3. 如何调用父类 __init__

    1. super(). __init__(参数)
    2. super(类名,对象).__init__(参数)
  4. 如果父类有eat(),子类也定义一个eat方法,默认搜索原则:先找当前类,再去找父类。

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

  5. 子类的方法中也可以调用的父类的方法,

    super().eat()

相关文章:

Python---关联与继承

专栏:python 个人主页:HaiFan. 专栏简介:Python在学,希望能够得到各位的支持!!! 关联与继承前言has a关联关系is a继承关系子类不添加__init__子类添加__init__前言 has a关联关系 has - a 是在…...

数据库行业的 “叛逆者”:大数据已“死”,MotherDuck 当立

“大数据”已死——现今我们最重要的事情不是担心数据大小,而是专注于我们将如何使用它来做出更好的决策。数据库行业发展至今,在数据层面有很多的加速和变革,尤其是过去几年的云数仓爆炸式增长,带来了行业的很多变化。毫无疑问&a…...

Linux->进程优先级

目录 1. 优先级的概念 2. 优先级的运作方式 3. Linux下查看进程优先级以及调整 3.1 查看进程优先级 3.2 修改进程优先级 1. 优先级的概念 1. cpu资源分配的先后顺序,就是指进程的优先权(priority)。 2. 优先权高的进程有优先执行权利。配…...

loki 日志管理的安装部署使用

loki介绍 Loki是 Grafana Labs 团队最新的开源项目,是一个水平可扩展,高可用性,多租户的日志聚合系统。它的设计非常经济高效且易于操作,因为它不会为日志内容编制索引,而是为每个日志流编制一组标签。 不对日志进行…...

CTFer成长之路之反序列化漏洞

反序列化漏洞CTF 1.访问url: http://91a5ef16-ff14-4e0d-a687-32bdb4f61ecf.node3.buuoj.cn/ 点击下载源码 本地搭建环境并访问url: http://127.0.0.1/www/public/ 构造payload: ?sindex/index/hello&ethanwhoamiPOST的参数&#…...

Python学习-----模块5.0(文件管理大师-->os模块)

目录 前言: 1.os.getcwd() 2. os.listdir(path) 3.os.walk(path) 4.os.path.exists(path) 5.os.mkdir(path) 6.os.makedirs(path,exist_okTrue) 7.os.rmdir(path) 8.os.remove(path) 9.os.path.join(p1,p2) 10.os.path.split(path) 11.os.path.isdi…...

第45届世界技能大赛“网络安全”赛项浙江省选拔赛竞赛任务书

第45届世界技能大赛浙江省选拔赛竞赛任务书 一、竞赛时间 8:00-17:00,共计9小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 模块A 任务1 数据库安全加固 8:00-10:00 50 任务2 文件MD5校验 50 任务3 Linux系统服务渗透测试及安全加…...

【uniapp微信小程序】跨平台使用echarts的方案选择踩坑

一、前言 使用Uniapp(vue)开发微信小程序,想用echarts图表实现类似github热力图的效果。 简要列一些可行或不可行的方案。 二、方案对比 1. 【应用】:微信小程序原生开发 有echarts官网提供的跨平台方案:在微信小程…...

WAF渗透攻防实践(16)

预备知识 WAF:WEB攻击一直是黑客攻击的主流手段,WAF作为网站安全基础设施的标配。Web Application Firewall,Web应用防火墙,通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的产品。 Nginx:Nginx 是…...

高并发场景下机器性能优化sop

之前接触过一些高并发场景下的性能优化,最近过年时候又碰巧看了一些相关资料,趁着还没忘干净,手动整理一下,有一些是在别处看到的,有一些是自己的亲身经历,因为偏向于自己整理笔记所以很多地方都只是列了一…...

【女程序员进大厂面试经验】

*那些犹豫想做技术又不敢的女生一定不要胆怯,就认准了这条路坚持走下去。大三的学生已经可以开始投简历、寻找面试机会了。先说一下我的情况吧!我是郑州一双普通本科的女大学生,刚找工作的时候也很迷茫。同班的女生有做产品的、有做前端的、还…...

计算机网络笔记(复试准备)第一章

计算机网络笔记(复试准备) 第一章 网络,互联网与因特网 网络由若干个结点和连接这些结点的链路组成 多个网络通过路由器连接起来这也就形成了一个更大的网络即是我们熟知的互联网也就是“网络的网络” 因特网是世界上最大的网络 问&#xf…...

WooCommerce 上传文件 Vanquish v71.6

今天用wp 搭一个b2c外贸跨境电商网站 找 了一个文件上传插件,可以 上传无限数量的文件,没有文件大小限制WooCommerce 上传文件允许您上传无限数量的文件,没有任何文件大小限制。得益于其创新的块上传技术,它可以不受限制地上传任何…...

zabbix4.0 Web页面配置 - 聚合图形的实现

目录 1、主机组Host groups配置 创建主机组 ​编辑 将一个主机添加至刚才创建的主机里面 2、用户参数UserParameter设置 示例: 添加一个参数:show.host.messages 模拟zabbix模板里面的参数再添加一个userparameter 3、触发器设置 示例: …...

计算机网络 — UDP协议(看这一篇就可以

UDP协议UDP是传输层的重要协议之一,另一重要协议为TCP协议。两者对比:TCP协议复杂,但传输可靠。UDP协议简单,但传输不可靠。UDP协议全称为:User Datagram Protocol(用户数据报协议)。它是一个简…...

Pikachu靶场(暴力破解)

目录标题暴力破解(登录)基于表单的暴力破解验证码绕过(on server)验证码绕过(on client)token防爆破?上学期用这个靶场写过作业,现在抽空给它过一遍,由于需要抓包,从而通过小皮,使用本地(127.0…...

浅谈script,link,import,@import引入

一.页面导入样式,使用link和import有什么区别 链接式和导入式有什么区别(链接式,导入式,内嵌式,行内) 1.从属关系:link是html标签,import是css提供的. 2.加载差异:页面加载时,link会…...

【CSS】CSS 层叠样式表 ① ( 简介 | CSS 引入方式 - 内联样式 | 内联样式语法 | 内联样式缺点 )

文章目录一、CSS 层叠样式表二、CSS 引入方式 - 内联样式1、内联样式语法2、内联样式缺点3、内联样式代码示例① 核心代码示例② 完整代码示例③ 执行结果一、CSS 层叠样式表 CSS 全称 Cascading Style Sheets , 层叠样式表 ; 作用如下 : 设置 HTML 页面 文本内容 的 字体 , 颜…...

12.STM32系统定时器-SysTick

目录 1.系统定时器-SysTick 2.SysTick定时时间的计算 3.SysTick结构体 4.SysTick固件库函数 5.SysTick中断优先级 1.系统定时器-SysTick SysTick:24位系统定时器,只能递减,存在于内核嵌套在NVIC中。所有的Cortex-M中都有这个系统定时器。 重装载值…...

28张图讲解支付系统的通用设计,漂亮!

支付永远是一个公司的核心领域,因为这是一个有交易属性公司的命脉。那么,支付系统到底长什么样,又是怎么运行交互的呢?抛开带有支付牌照的金融公司的支付架构,下述链路和系统组成基本上符合绝大多数支付场景。其实整体…...

大语言模型如何处理长文本?常用文本分割技术详解

为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】,注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录(即exe所在文件夹)加入系统变量…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙(HarmonyOS5)中集成百度地图,可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API,可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​:下载安装 ​​De…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

高考志愿填报管理系统---开发介绍

高考志愿填报管理系统是一款专为教育机构、学校和教师设计的学生信息管理和志愿填报辅助平台。系统基于Django框架开发,采用现代化的Web技术,为教育工作者提供高效、安全、便捷的学生管理解决方案。 ## 📋 系统概述 ### 🎯 系统定…...

Vue3中的computer和watch

computed的写法 在页面中 <div>{{ calcNumber }}</div>script中 写法1 常用 import { computed, ref } from vue; let price ref(100);const priceAdd () > { //函数方法 price 1price.value ; }//计算属性 let calcNumber computed(() > {return ${p…...

UE5 音效系统

一.音效管理 音乐一般都是WAV,创建一个背景音乐类SoudClass,一个音效类SoundClass。所有的音乐都分为这两个类。再创建一个总音乐类&#xff0c;将上述两个作为它的子类。 接着我们创建一个音乐混合类SoundMix&#xff0c;将上述三个类翻入其中&#xff0c;通过它管理每个音乐…...