Python学习从0到1 day20 第二阶段 面向对象 ③ 继承

循此苦旅,以达天际

              —— 24.4.3

一、继承的基础语法

学习目标:

① 理解继承的概念

② 掌握继承的使用方式

③ 掌握pass关键字的作用

单继承

语法:

        class 类名(父类名):

                类内容体

继承分为:单继承和多继承

继承表示:将从父类那里继承(复制)来成员变量和成员方法(不含私有)

案例:

'''
演示面向对象:继承的基础语法
'''# 演示单继承
class Better:Imei = "AllBetter"def sayhello(self):print("一切都会好的")class Future(Better):id = "insist"def Tomorrow(self):print("我一直相信")Lcl = Future()
print(Lcl.Imei)
print(Lcl.id)
Lcl.sayhello()
Lcl.Tomorrow()

多继承

python中的类之间也支持多继承,即一个类,可以继承多个父类

语法:

        class 类名(父类1,父类2,……,父类N):

                类内容体

案例:

'''
演示多继承
'''
class Phone:IMEI = None     # 序列号producer = "HM" # 厂商def call_by_4g(self):print("4G通话")class NFCReader:nfc_type = "第五代"producer = "HM"def read_card(self):print("NFC读卡")def whrite_card(self):print("NFC写卡")class RemoteControl:rc_type = "红外遥控"def control(self):print("红外遥控开启了")class MyPhone(Phone,NFCReader,RemoteControl):pass    # 补全,让我们的代码显示为空phone = MyPhone()
print(phone.producer)
phone.call_by_4g()
phone.read_card()
phone.whrite_card()
phone.control()

多继承注意事项:

多个父类中,如果有同名的成员,那么默认以继承顺序(从左到右)为优先级

即:先继承的保留,后继承的被覆盖

总结

1.什么是继承?

        继承就是一个类,继承另外一个类的成员变量和成员方法

        语法:

                class 类(父类1,父类2,……,父类N):

                        类内容体

        子类构建的类对象,可以:

                ①有自己的成员变量和成员方法

                ②使用父类的成员变量和成员方法

2.单继承和多继承

        单继承:一个类继承另一个类

        多继承:一个类继承多个类,按照顺序从左向右依次继承

        多继承中,如果父类有同名方法或属性,先继承的优先级高于后继承

3.pass关键字的作用是什么?

        pass是占位语句,用来保证函数(方法)或类定义的完整性,表示无内容,空的意思

二、复写和使用父类成员

学习目标

1.掌握复写父类成员的语法

2.掌握如何在子类中调用父类成员

复写

子类继承父类的成员属性和成员方法后,如果对其不满意,那么可以进行复写

即:在子类中重新定义同名的属性或方法即可

案例:

'''
复写
'''
class Phone:IMEI = Noneproducer = "ITCAST"def call_by_5g(self):print("父类的5g通话")class MyPhone(Phone):producer = "ITheima"def call_by_5g(self):print("子类的5g通话")print("开启CPU单核模式,以便于省电")myPhone = MyPhone()
myPhone.call_by_5g()
print(myPhone.IMEI)
print(myPhone.producer)

调用父类同名成员

一旦复写父类成员,那么类对象调用成员的时候,就会调用复写后的新成员

如果需要使用被复写的父类的成员,需要特殊的调用方式:

        方式1:

                调用父类成员

                使用成员变量:父类名.成员变量

                使用成员方法:父类名.成员方法(self)

        方式2:

                使用super()调用父类成员

                使用成员变量:super().成员变量

                使用成员方法:super().成员方法()

'''
复写
'''
class Phone:IMEI = Noneproducer = "ITCAST"def call_by_5g(self):print("父类的5g通话")class MyPhone(Phone):producer = "ITheima"    # 复写父类的成员属性def call_by_5g(self):print("子类的5g通话")print("开启CPU单核模式,以便于省电")'''如果需要使用被复写的父类的成员,需要特殊的调用方式:方式1:用父类成员使用成员变量:父类名.成员变量使用成员方法:父类名.成员方法(self)方式2:使用super()调用父类成员使用成员变量:super().成员变量使用成员方法:super().成员方法()'''print(f"父类的厂商是:{super().producer}")super().call_by_5g()myPhone = MyPhone()
myPhone.call_by_5g()
print(myPhone.IMEI)
print(myPhone.producer)

总结

1.复写表示:

        对父类的成员属性或成员方法进行重新定义

2.复写的语法:

        在子类中重新实现同名成员方法或成员属性即可

3.在子类中,如何调用父类成员:

        方式1:

                调用父类成员

                使用成员变量:父类名.成员变量

                使用成员方法:父类名.成员方法(self)

        方式2:

                使用super()调用父类成员

                使用成员变量:super().成员变量

                使用成员方法:super().成员方法()

        注意:只可以在子类内部调用父类的同名成员,子类的实体类对象调用默认是调用子类复写的

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

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

相关文章

WE博客代码系统

WE博客代码系统 说明文档 运行前附加数据库.mdf(或sql生成数据库) 主要技术: 基于asp.net mvc架构和sql server数据库,并采用EF实体模型开发。 三层架构并采用EF实体模型开发 功能模块: WE博客代码系统 WE博客代码系…

Vue指令之v-model

调了半天没反应,结果是没引用Vue,我是伞兵。 v-model的作用是将视图与数据双向绑定。一般情况下,Vue是数据驱动的,即数据发生改变后网页就会刷新一次,更改对应的网页内容,即数据单向绑定了网页内容。而使用…

每日一题————P5725 【深基4.习8】求三角形

题目: 题目乍一看非常的简单,属于初学者都会的问题——————————但是实际上呢,有一些小小的坑在里面。 就是三角形的打印。 平常我们在写代码的时候,遇到打印三角形的题,一般简简单单两个for循环搞定 #inclu…

【C++第三阶段】模板类模板通用数组实现案例

以下内容仅为当前认识,可能有不足之处,欢迎讨论! 文章目录 模板怎么使用模板函数模板注意事项普通函数与函数模板的区别普通函数与函数模板调用规则函数模板限制 类模板类模板语法类模板与函数模板区别类模板中成员函数创建时机类模板对象做函…

Google Chrome 常用设置

Google Chrome 常用设置 References 转至网页顶部 快捷键:Home 转至内容设置 chrome://settings/content 清除浏览数据 历史记录 -> 清除浏览数据 关于 Chrome 设置 -> 关于 Chrome chrome://settings/help References [1] Yongqiang Cheng, https:/…

关于ansible的模块 ③

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 接《关于Ansible的模块①》和《关于Ansible的模块②》,继续学习ansible的user模块。 user模块可以增、删、改linux远…

回溯算法|491.递增子序列

力扣题目链接 class Solution { private:vector<vector<int>> result;vector<int> path;void backtracking(vector<int>& nums, int startIndex) {if (path.size() > 1) {result.push_back(path);// 注意这里不要加return&#xff0c;要取树上…

人脸识别seetaface6 windows + cmake + vs编译,踩坑指南

遇到问题冷静分析&#xff0c;没有解决不了的问题&#xff0c;只是需要时间。与君共勉 环境准备 要在windows 上编译c 源码&#xff0c;需要准备如下软件。省去了详细的安装过程。 visual studio 2022 (社区免费版链接)mingw64 下载路径 (安装后&#xff0c;记得添加系统路径…

elementui 实现一个固定位置的Pagination(分页)组件

系列文章目录 一、elementui 导航菜单栏和Breadcrumb 面包屑关联 二、elementui 左侧导航菜单栏与main区域联动 三、elementui 中设置图片的高度并支持PC和手机自适应 四、 elementui 实现一个固定位置的Pagination&#xff08;分页&#xff09;组件 文章目录 系列文章目录…

今客CRM客户管理系统 v17.3

简介&#xff1a; 今客CRM客户管理系统主要是为了帮助企业解决在日常工作中遇到的客户管理等难题而开发&#xff0c;通过今客CRM客户管理系统可以对企业事务中的不同功能进行操作&#xff0c;用户通过自定义字段类型可以达到适合不同企业的需求。在今客客户关系管理系统中管理…

【子集回溯】【树枝+树层去重】Leetcode 491. 非递减子序列

【组合回溯】【树枝树层去重】Leetcode 491. 非递减子序列 解法1 ---------------&#x1f388;&#x1f388;题目链接&#x1f388;&#x1f388;------------------- 解法1 【树层去重】&#xff1a;如果在同层元素重复(这里无法排序&#xff0c;所以无法使用之前的flag&a…

HarmonyOS 应用开发之启动远程PageAbility(仅对系统应用开放)

启动远程PageAbility同样通过featureAbility中的startAbility接口实现。 除引入’ohos.ability.featureAbility’外&#xff0c;还需引入’ohos.distributedHardware.deviceManager’&#xff0c;通过DeviceManager&#xff08;该组件提供帐号无关的分布式设备的认证组网能力&…

鸿蒙南向开发实战:【智能窗帘】

样例简介 智能窗帘设备不仅接收数字管家应用下发的指令来控制窗帘开启的时间&#xff0c;而且还可以加入到数字管家的日程管理中。通过日程可以设定窗帘开关的时间段&#xff0c;使其在特定的时间段内&#xff0c;窗帘自动打开或者关闭&#xff1b;通过日程管家还可以实现窗帘…

蓝桥杯备考

目录 P8823 [传智杯 #3 初赛] 期末考试成绩 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码 P8828 [传智杯 #3 练习赛] 直角三角形 题目描述 输入格式 输出格式 输入输出样例 代码 P8833 [传智杯 #3 决赛] 课程 题目背景 题目描述 输入格式 输出格式…

redis---位图Bitmap和位域 Bitfield

位图是字符串类型的拓展&#xff0c;可以使用一个string类型来模拟一个Bit数组。数组的下标就是偏移量&#xff0c;值只有0和1&#xff0c;也支持一些位运算&#xff0c;比如与或非&#xff0c;异或等等&#xff0c;它们的应用场景非常广泛比如可以用来记录用户的签到情况&…

Qt中继承QCheckBox的类结合QTableWidget实现多选并且每个多选的id都不一样

1.相关描述 继承QCheckBox的类MyCheckBox&#xff0c;利用QTableWidget的setCellWidget方式添加MyCheckBox类的对象 2.相关页面 3.相关代码 mycheckbox.h #ifndef MYCHECKBOX_H #define MYCHECKBOX_H#include <QCheckBox> #include <QObject>class MyCheckBox : pu…

力扣刷题Days31-2.两数相关(js)

1&#xff0c;题目 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;…

Vue3:Pinia简介及环境搭建

一、简介 Pinia是Vue3中的状态管理工具&#xff0c;类似与Vue2中的Vuex框架的作用 二、环境搭建 1、安装 npm install pinia2、配置 main.ts import {createApp} from vue import App from ./App.vue // 第一步&#xff1a;引入pinia import {createPinia} from piniacons…

zabbix源码安装

目录 一.安装php和nginx客户端环境 二.修改php配置 三.修改nginx配置文件 四.下载并编译zabbix 五.创建zabbix需要的用户及组 六.安装编译需要的依赖 七.配置zabbix文件 八.数据库配置 九.配置zabbix 十.web界面部署 十一.遇到无法创建配置文件 十二.登录zabbix 前…

2014最新AI学法减分交管12123小程序源码最新玩法

2014最新AI学法减分交管12123小程序源码最新玩法利用ChatGPT实现拍照搜题 利用ChatGPT实现拍照搜题 学法减分这个项目是几年之前的项目&#xff0c;老朋友都知道&#xff0c;以前我用Python实现了向量检索&#xff0c;也就是当时和大家说到的AI题库&#xff0c;那时候国内还没…