继承的基本语法

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm=1001.2014.3001.5501

在编写类时,并不是每次都要从空白开始。当要编写的类和另一个已经存在的类之间存在一定的继承关系时,就可以通过继承来达到代码重用的目的,提高开发效率。下面将介绍如何在Python中实现继承。

继承是面向对象编程最重要的特性之一,它源于人们认识客观世界的过程,是自然界普遍存在的一种现象。例如,我们每一个人都从祖辈和父母那里继承了一些体貌特征,但是每个人却又不同于父母,因为每个人都存在自己的一些特性,这些特性是独有的,在父母身上并没有体现。在程序设计中实现继承,表示这个类拥有它继承的类的所有公有成员或者受保护成员。在面向对象编程中,被继承的类称为父类或基类,新的类称为子类或派生类。

通过继承不仅可以实现代码的重用,还可以通过继承来理顺类与类之间的关系。在Python中,可以在类定义语句中,类名右侧使用一对小括号将要继承的基类名称括起来,从而实现类的继承。具体的语法格式如下:

class ClassName(baseclasslist):

    '''类的帮助信息'''                         # 类文档字符串

    statement                            # 类体

参数说明:

l   ClassName:用于指定类名。

l   baseclasslist:用于指定要继承的基类,可以有多个,类名之间用逗号“,”分隔。如果不指定,将使用所有Python对象的根类object。

l  '''类的帮助信息''':用于指定类的文档字符串,定义该字符串后,在创建类的对象时,输入类名和左侧的括号“(”后,将显示该信息。

l   statement:类体,主要由类变量(或类成员)、方法和属性等定义语句组成。如果在定义类时,没想好类的具体功能,也可以在类体中直接使用pass语句代替。

图标 (35)

  实例04  创建水果基类及其派生类

在IDLE中创建一个名称为fruit.py的文件,然后在该文件中定义一个水果类Fruit(作为基类),并在该类中定义一个类属性(用于保存水果默认的颜色)和一个harvest()方法,然后创建Apple类和Orange类,都继承自Fruit类,最后创建Apple类和Orange类的实例,并调用harvest()方法(在基类中编写),代码如下:

class Fruit:                                            # 定义水果类(基类)

    color = "绿色"                                      # 定义类属性

    def harvest(self, color):

        print("水果是:" + color + "的!")              # 输出的是形式参数color

        print("水果已经收获……")

        print("水果原来是:" + Fruit.color + "的!")    # 输出的是类属性color

class Apple(Fruit):                                      # 定义苹果类(派生类)

    color = "红色"

    def __init__(self):

        print("我是苹果")

class Orange(Fruit):                                     # 定义橘子类(派生类)

    color = "橙色"

    def __init__(self):

        print("\n我是橘子")

apple = Apple()                                          # 创建类的实例(苹果)

apple.harvest(apple.color)                               # 调用基类的harvest()方法

orange = Orange()                                        # 创建类的实例(橘子)

orange.harvest(orange.color)                            # 调用基类的harvest()方法

执行上面的代码,将显示如图18所示的运行结果。从该运行结果中可以看出,虽然在Apple类和Orange类中没有harvest()方法,但是Python允许派生类访问基类的方法。

图18  创建水果基类及其派生类的结果

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

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

相关文章

AI早班车6.3

1.蚂蚁技术日:支付宝三大「AI 管家」亮相。 2.百度赵世奇:百度搜索+文心智能体平台,助力智能体人人可用。 3.腾讯:发布大模型App腾讯元宝。 4.AFAC2024金融智能创新大赛启动,让高质量金融服务人人可用 …

Docker笔记-解决非交互式运行python时print不输出的问题

换句话来说就是在docker中如何不会python的print 只需要在启动时&#xff0c;不让python缓冲其输出。 关键命令如下&#xff1a;PYTHONUNBUFFERED1 如下&#xff1a; docker run -e PYTHONUNBUFFERED1 <your_image> 下面解释下-e "-e"选项的全称是"…

lux和ffmpeg进行下载各大主流自媒体平台视频

1、lux下载&#xff0c;链接&#xff1a;https://pan.baidu.com/s/1WjGbouL3KFTU6LeqZmACpA?pwdagpp 提取码&#xff1a;agpp 2、ffmpeg下载&#xff0c;跟lux放在同一个目录&#xff1b; 3、为lux、ffmpeg设置环境变量&#xff1b; 4、WINR&#xff0c;打开运行&#xff0…

Love-Yi情侣网站3.0存在SQL注入漏洞

目录 1. 前言 2. 网站简介 3. 寻找特征点 3.1 第一次尝试 3.2 第二次尝试 4.资产搜索 5.漏洞复现 5.1 寻找漏洞点 5.2 进行进一步测试 5.2.1 手动测试 1.寻找字段 2.寻找回显位 3.查询当前用户 5.2.2 sqlmap去跑 6.总结 1. 前言 朋友说自己建了一个情侣网站,看到…

chat4-Server端保存聊天消息到mysql

本文档描述了Server端接收到Client的消息并转发给所有客户端或私发给某个客户端 同时将聊天消息保存到mysql 服务端为当前客户端创建一个线程&#xff0c;此线程接收当前客户端的消息并转发给所有客户端或私发给某个客户端同时将聊天消息保存到mysql 本文档主要总结了将聊天…

基于django | 创建app,并启动django

1、删除系统默认的目录路径&#xff1a;BASE_DIR / templetes 2、在终端输入命令&#xff1a; python manage.py startapp app01 # 这里的app01是我创建app的名称 3、如果没有创建成功&#xff0c;手动点击 Creat App , 4、在 setting.py 中找到 INSTALLED_APPS ,添加 ap…

✅count(1)、count(*) 与 count(列名) 的区别

简单来说&#xff1a; COUNT(1) 和 COUNT(*) 表示的是直接查询符合条件的数据库表的行数。而 COUNT(列名) 表示的是查询符合条件的列的值不为 NULL 的行数。 除了查询得到结果集有区别之外&#xff0c;在性能方面 COUNT() 约等于 COUNT(1)&#xff0c;但是 **COUNT() 是 SQL9…

Qt——升级系列(Level Two):Hello Qt 程序实现、项目文件解析、

Hello Qt 程序实现 使用“按钮”实现 纯代码方式实现&#xff1a; // Widget构造函数的实现 Widget::Widget(QWidget *parent): QWidget(parent) // 使用父类构造函数初始化QWidget&#xff0c;传入父窗口指针, ui(new Ui::Widget) // 创建Ui::Widget类的实例&#xff0c;并…

基于GTX 8B10B编码的自定义PHY接收模块(高速收发器十三)

点击进入高速收发器系列文章导航界面 前文完成了发送模块的设计&#xff0c;本文接着完成接收模块的设计&#xff0c;接收模块相对发送模块会更加麻烦。 1、设计思路 前文在讲解官方示例工程时&#xff0c;提到GTX IP的接收部分没有做字对齐&#xff0c;需要用户自己编写字对齐…

微服务:Rabbitmq的基本的消息队列的入门简单使用(消息队列中间件)

先介绍最简单的使用方式&#xff0c;后面还会更新其他使用方法。 简单案例 目录结构 引入依赖&#xff1a; <!--AMQP依赖&#xff0c;包含RabbitMQ--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

JAVA:Spring Boot整合Kaptcha验证码实现登录验证

请关注微信公众号&#xff1a;拾荒的小海螺 博客地址&#xff1a;http://lsk-ww.cn/ 1、简述 在Web应用程序中&#xff0c;验证码是一种常见的安全措施&#xff0c;用于验证用户的身份以防止恶意活动&#xff0c;如自动化攻击或机器人。Spring Boot提供了许多库和工具&#x…

UnityAPI学习之Transform组件基本使用

目录 Transform组件 访问与获取 Transform的位置和旋转信息 Transform局部坐标和旋转信息的获取 Transform的缩放与正方向 缩放&#xff08;Scale&#xff09; 正方向 Transform相关的查找方法 销毁游戏物体 Transform组件 访问与获取 现在创建一个容器放置GrisGO物…

VueX核心内容

聚沙成塔每天进步一点点 本文内容 ⭐ 专栏简介Vuex 核心内容核心概念1. State&#xff08;状态&#xff09;示例&#xff1a; 2. Getter&#xff08;获取器&#xff09;示例&#xff1a; 3. Mutation&#xff08;突变&#xff09;示例&#xff1a; 4. Action&#xff08;动作&a…

MbedTLS源码跨平台编译(window/macos/linux)

1.window平台编译: 克隆: git clone --recursive https://github.com/Mbed-TLS/mbedtls.git 克隆成功 添加OpenSSL环境变量 验证环境 使用cmake编译 cmake ../生成配置时出错 出现上面原因是克隆下来的library与programs及tests目录少文件了,直接下载zip包替换library目录

dibbler-DHCPv6 的开源框架(C++ 实现)1

一、下载 IPv6 DHCPv6 协议的开源框架&#xff1a;dibbler 下载地址&#xff1a;https://github.com/tomaszmrugalski/dibbler.git 二、代码编写语言和文件结构 编写语言 文件 三、编译 编译 server 端&#xff1a; chmod x configure ./configure# 编译服务端(4核) mak…

Renesas MCU之使用e² studio搭建开发环境

目录 概述 1 e studio介绍 2 搭建Renesas MUC开发环境 2.1 软件版本信息 2.2 安装软件 3 创建工程 3.1 板卡硬件接口 3.2 FSP配置IO 4 Generate Project 4.1 项目目录介绍 4.2 LED接口相关驱动 5 调试 5.1 测试代码 5.2 J-Link调试代码 5.3 硬件结构 概述 本文主…

【ARM】

ARM ■ 指令集■ 1. RISC■ 2. CISC ■ ARM简介■ 1.■ 2. ■ ARM-CPU体系架构■ 1. M0■ 2. M3■ 3. M4■ 4. M7■ 5. M7■ 6. M7 ■ ARM-寄存器■ 1. 通用寄存器■ 2.■ 3.■ 4. ■ ARM-工作模式■ ARM-寄存器组■ ARM-异常向量表■ 由于soc0x00000000 是存放IROM芯片出厂数据…

由MapTile引发的ResultSet的思考及实践

其实这篇文章应该是上周末来写的&#xff0c;但是苦逼啊。别人都抱怨工作996&#xff0c;我特么直接9117了&#xff0c;连轴转12天&#xff0c;完全没有个人时间&#xff0c;苦逼啊&#xff01; 本来周末计划看完龙珠Z&#xff08;日语&#xff09;布欧篇 呢&#xff0c;给自己…

喵星人必备!福派斯三文鱼猫粮,营养满分!

猫粮品牌&#xff1a;福派斯三文鱼猫粮测评体验 在快节奏的都市生活中&#xff0c;我们的宠物猫也需要适应当下的生活环境&#xff0c;并保持健康和活力。作为一名合格的铲屎官&#xff0c;我们总是关心如何为猫咪提供既健康又美味的饮食。今天&#xff0c;我有幸为大家带来一…

Gradle如何发布一个Android开源框架到JitPack

序言 在Android领域耕耘了多年的老司机们&#xff0c;技术大多已经沉淀到足以自己写各种各样的框架了。你有没有想过?其实你可以将写好的框架开源出来&#xff0c;让更多人受益&#xff0c;提升开发效率。亦或者是引用过别人com.github打头的开源框架&#xff0c;但是不知道自…