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 = None
    producer = "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 = None
    producer = "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().成员方法()

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

redis---HyperLogLog

HyperLogLog是一个基数统计的算法,如果集合中的每个元素都是唯一且不重复的,那么这个集合的基数就是集合中元素的个数 它的原理是使用随机算法来计算,通过牺牲一定的精确度,来换取更小的内存消耗,优点就是占用内存小。…

“帮助“Java成长的世界级大师不简单!

文章目录 初探编程:“天啊,真酷,程序真的能学习。”哺育Java成长,成为Java幕后英雄出书《Effective Java》斩获Jolt图书大奖 是谁?作品一出版就获得著名的Jolt图书大奖,每一版本豆瓣评分均超9.0&#xff01…

[已解决] slam_gmapping: undefined symbol: _ZN8GMapping14sampleGaussianEdm问题

之前用的好好的gampping建图功能包,今天突然不能用了,运行报错如下: /opt/ros/noetic/lib/gmapping/slam_gmapping: symbol lookup error: /opt/ros/noetic/lib/gmapping/slam_gmapping: undefined symbol: _ZN8GMapping14sampleGaussianEdm …

ShardingJdbc兼容达梦

ShardingJdbc兼容达梦 ​ 本章详细说ShardingJdbc和达梦数据库的扩展和配置问题,ShardingJdbc和DruidDataSource、Mybatis整合的兼容、冲突问题,以及这些问题的解决方案。,干货满满,全网独一份,建议收藏。本章不说Sha…

数码论坛系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)电子科技数码爱好者交流信息新闻畅聊讨论评价

本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读300套最新项目持续更新中..... 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含ja…

680.验证回文串II-力扣

680.验证回文串II-力扣 给你一个字符串 s,最多可以从中删除一个字符。 请你判断 s 是否能成为回文字符串:如果能,返回 true ;否则,返回 false。 示例1: 输入:s “aba” 输出:true示…

Python就业前景如何?薪资待遇怎么样?

前言 Python作为一种高级编程语言,已经在多个领域得到了广泛的应用,包括数据分析、人工智能、Web开发等。随着技术的不断发展和应用领域的不断扩展,Python的就业前景也越来越广阔。 首先,Python在数据分析领域的应用非常广泛。随…

mac | Windows 本地部署 Seata2.0.0,Nacos 作为配置中心、注册中心,MySQL 存储信息

1、本人环境介绍 系统 macOS sonama 14.1.1 MySQL 8.2.0 (官方默认是5.7版本) Seata 2.0.0 Nacos 2.2.3 2、下载&数据库初始化 默认你已经有 Nacos、MySQL,如果没有 Nacos 请参考我的文章 : Docker 部署 Nacos(单机…

滴滴盈利,司机“受伤”

近日,滴滴对外披露了2023年Q4及全年业绩。 财报数据显示,2023年Q4,滴滴实现营收494亿元,同比增长55.4%,净利润达11亿元;2023年全年滴滴实现营收共计1924亿元,同比增长36.6%,净利润达…

springboot对接minio的webhook全过程

前言 近日需要将minio的apache2.0版本给用起来,顺便要完善一下原有的文件上传管理系统,其中很重要的一点是,在原有客户端直传的基础上,再添加 minio 的上传回调给服务端做后续处理。 本文重点在于,介绍整个minio与spr…

MySQL生产环境常见故障及解决方案汇总

MySQL生产环境常见故障及解决方案汇总 1. MySQL主从同步异常故障1.1. 情景说明1.2. 排查过程1.3. 数据同步2. MySQL慢查询故障1. MySQL主从同步异常故障 1.1. 情景说明 MySQL主库网卡需要更换IP地址,并将原IP地址配置为MySQL集群的VIP地址,上层应用程序其实不需要更改连接My…

VUE——生命周期

概念&#xff1a; mounted:挂载 new Vue({el: "#x",data: {},methods: {},mounted() {}, }) 系统会自己调用&#xff0c;不需要我们调用。 案例 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><…

JavaScript(五)---【DOM】

零.前言 JavaScript(一)---【js的两种导入方式、全局作用域、函数作用域、块作用域】-CSDN博客 JavaScript(二)---【js数组、js对象、this指针】-CSDN博客 JavaScript(三)---【this指针&#xff0c;函数定义、Call、Apply、函数绑定、闭包】-CSDN博客 JavaScript(四)---【执…

在 Windows 中安装部署并启动连接 MongoDB 7.x(命令行方式启动、配置文件方式启动、将启动命令安装为系统服务实现开机自启)

MongoDB 的下载 下载地址&#xff1a;https://www.mongodb.com/try/download/community 这里需要对 MongoDB 的版本号说明一下&#xff1a; MongoDB 版本号的命名规则是 x.y.z&#xff0c;当其中的 y 是奇数时表示当前的版本为开发版&#xff0c;当其中的 y 是偶数时表示当前的…

“多组数组”题的注意事项,天杀的“鲁棒性”

【题目描述】 输入一些整数&#xff0c;求出它们的最小值、最大值和平均值&#xff08;保留3位小数&#xff09;。输入保证这些数都是不超过1000的整数。 输入包含多组数据&#xff0c;每组数据第一行是整数个数n&#xff0c;第二行是n个整数。n&#xff1d;0为输入结束标记&…

日志服务 HarmonyOS NEXT 日志采集最佳实践

作者&#xff1a;高玉龙&#xff08;元泊&#xff09; 背景信息 随着数字化新时代的全面展开以及 5G 与物联网&#xff08;IoT&#xff09;技术的迅速普及&#xff0c;操作系统正面临前所未有的变革需求。在这个背景下&#xff0c;华为公司自主研发的鸿蒙操作系统&#xff08…

经典文献阅读之--LOG-LIO(高效局部几何信息估计的激光雷达惯性里程计)

0. 简介 局部几何信息即法线和点分布在基于激光雷达的同时定位与地图构建&#xff08;SLAM&#xff09;中是至关重要&#xff0c;因为它为数据关联提供了约束&#xff0c;进一步确定了优化方向&#xff0c;最终影响姿态的准确性。然而即使在使用KD树或体素图的辅助下&#xff…

echarts 毕节区县地图 包含百管委、高新区 (手扣)

百度网盘 链接&#xff1a;https://pan.baidu.com/s/14yiReP8HT_bNCGMOBajexg 提取码&#xff1a;isqi

【Qt 学习笔记】Qt 开发环境的搭建 | Qt 安装教程

博客主页&#xff1a;Duck Bro 博客主页系列专栏&#xff1a;Qt 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ Qt 开发环境的搭建 | Qt 安装教程 文章编号&#xff1a;Qt 学习笔记 /…

坦克大战_java源码_swing界面_带毕业论文

一. 演示视频 坦克大战_java源码_swing界面_带毕业论文 二. 实现步骤 完整项目获取 https://githubs.xyz/y22.html 部分截图 启动类是 TankClinet.java&#xff0c;内置碰撞检测算法&#xff0c;线程&#xff0c;安全集合&#xff0c;一切皆对象思想等&#xff0c;是java进阶…