【Python】实战:请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息

# 定义汽车基类
class Car:def __init__(self, model, license_plate):self.model = model # 车型self.license_plate = license_plate # 车牌def start(self):print(f"{self.model} ({self.license_plate}) 启动了。")def stop(self):print(f"{self.model} ({self.license_plate}) 停止了。")# 定义出租车类
class Taxi(Car):def __init__(self, model, license_plate, company):super().__init__(model, license_plate) # 调用父类构造函数self.company = company # 所属出租公司def start(self):super().start() # 调用父类的启动方法print(f"乘客您好\n我是 {self.company}的司机,我的车牌是{self.license_plate},您要去哪里?\n目的地到了,请您付费下车,欢迎您再次乘坐")
'''
乘客您好
我是长城出租车公司的,我的车牌是:京A88888,您要去哪里?
目的地到了,请您付费下车,欢迎再次乘坐
'''# 定义家用轿车类
class PrivateCar(Car):def __init__(self, model, license_plate, owner_name):super().__init__(model, license_plate) # 调用父类构造函数self.owner_name = owner_name # 车主姓名def start(self):super().start() # 调用父类的启动方法print(f"我是{self.owner_name},我的汽车我做主\n目的地到了,我们去玩吧")# 测试代码
if __name__ == "__main__":# 测试出租车类taxi = Taxi("宝马", "京A888888", "长城出租公司")taxi.start() # 启动出租车taxi.stop() # 停止出租车# 测试家用轿车类private_car = PrivateCar("奔驰", "冀A66666", "武大郎")private_car.start() # 启动家用轿车private_car.stop() # 停止家用轿车
该代码定义了一种汽车模型,通过面向对象的编程方式展示不同类型汽车的行为和特征。
首先,创建了一个名为`Car`的基类,它的构造方法`__init__`接受两个参数:`model`和`license_plate`,分别表示车型和车牌。该类定义了两个方法:`start`和`stop`,分别用于表示汽车启动和停止时的行为,方法中使用了格式化字符串来输出相应的信息。
接下来,定义一个子类`Taxi`,继承自`Car`类。`Taxi`类在其构造函数中除了调用父类的构造函数外,还增加了一个新属性`company`,表示出租车所属的出租公司。`Taxi`类重写了`start`方法,首先调用父类的`start`方法,然后输出出租车司机的相关信息和对乘客的问候。
然后,定义另一个子类`PrivateCar`,同样继承自`Car`类。此类在构造方法中增加了一个新属性`owner_name`,表示车主姓名。与`Taxi`类相似,`PrivateCar`类也重写了`start`方法,在调用父类的`start`方法后,输出车主的相关信息。
在测试代码部分,`if __name__ == "__main__":`确保该部分代码仅在脚本作为主程序执行时被调用。创建了一辆出租车对象`taxi`,并调用`start()`和`stop()`方法,测试其启动和停止的行为。接着,创建一辆家用轿车对象`private_car`,同样调用其`start()`和`stop()`方法,进行类似的测试。
通过这种继承和方法重载的方式,实现了多态性,使得不同类型的汽车在启动时输出不同的行为和信息。这样,使用者可以通过统一接口(`start`和`stop`方法)来操作不同类型的汽车,而实际的行为则取决于具体的汽车类型。
相关文章:
【Python】实战:请使用面向对象的思想,设计自定义类,描述出租车和家用轿车的信息
# 定义汽车基类 class Car:def __init__(self, model, license_plate):self.model model # 车型self.license_plate license_plate # 车牌def start(self):print(f"{self.model} ({self.license_plate}) 启动了。")def stop(self):print(f"{self.model} ({s…...
互联网摸鱼日报(2024-11-07)
互联网摸鱼日报(2024-11-07) 36氪新闻 阿华田再现颓势 中国旅游景区上市公司,三季度财报好看吗? 电动化浪潮下,消费者彻底放弃百年品牌BBA? 估值114亿,海尔系独角兽终止IPO 又一知名品牌门店全关,高端…...
requests库
GET请求 基本实例import requestsresponse requests.get(https://www.httpbin.org/get) print(response.text)params参数import requests data {"name":"Bileton","age":"21" } response requests.get(https://www.httpbin.org/ge…...
大数据之多级缓存方案
多级缓存介绍?多级缓存优缺点,应用场景?多级缓存架构? 多级缓存介绍 多级缓存方案是一种优化手段,通过在多个级别上存储数据来提高应用程序的性能和响应速度。以下是对多级缓存方案的详细解析: 一、多级缓…...
QCon演讲实录|徐广治:边缘云原生操作系统的设计与思考
10月18日,在 QCon 全球软件开发大会 2024(上海站),火山引擎边缘云资深架构师徐广治围绕火山引擎边缘计算产品背后的算力底座 - 边缘云原生操作系统,探讨如何实现算力服务的混合部署和跨区域弹性调度,以及在…...
web第二次作业
代码如下 <!DOCTYPE html> <html> <head> <!-- 设置页面的字符编码为utf-8,确保能正确显示各种字符 --> <meta charset"utf-8"> <title></title> <style> /* 全局样式设置 */ *{ …...
大模型技术讲解:大模型参数微调(大模型微调)
转自 秋色稻田公众号 这篇文章讲讲大模型的参数微调,参数微调(Fine-tuning)是一种机器学习技术,用于调整大型预训练模型的参数,以大模型适应特定应用场景。这种方法通常用于自然语言处理(NLP)…...
测试自动化如何和业务流程结合?
测试自动化框架固然重要,但是最终自动化的目的都是为了业务服务的。 那测试自动化如何对业务流程产生积极影响? 业务流程的重要性 测试自动化项目并非孤立存在,其生命周期与被测试的应用程序紧密相关。项目的价值在于被整个开发团队所使用&a…...
Python进阶之IO操作
文章目录 一、文件的读取二、文件内容的写入三、之操作文件夹四、StringIO与BytesIO 一、文件的读取 在python里面,可以使用open函数来打开文件,具体语法如下: open(filename, mode)filename:文件名,一般包括该文件所…...
ubuntu如何卸载colmap
如果你是通过源码编译并安装的 COLMAP,可以按照以下步骤手动卸载: 1. **查找安装路径**: 检查 COLMAP 安装时的路径(通常是 /usr/local)。 2. **删除二进制文件**: 删除已安装的 COLMAP 可执行文…...
【comfyui教程】ComfyUI即将迎来全新界面:升级体验就在11月15日
前言 ComfyUI迎来全新界面:升级体验就在11月15日 想象一下,拥有一个更直观、更智能的用户界面,不再需要在繁杂的设置中摸索。这不再只是梦想!从2024年11月15日起,ComfyUI将正式启用新UI (Beta UI)作为默认界面&#…...
Leecode热题100-104.二叉树的最大深度
给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:3示例 2: 输入:root [1,null,2] 输出…...
深度学习中的 Dropout:原理、公式与实现解析
8. dropout 深度学习中的 Dropout:原理、公式与实现解析 在神经网络训练中,模型往往倾向于“记住”训练数据的细节甚至噪声,导致模型在新数据上的表现不佳,即过拟合。为了解决这一问题,Dropout 应运而生。通过在训练…...
【大数据学习 | HBASE】habse的表结构
在使用的时候hbase就是一个普通的表,但是hbase是一个列式存储的表结构,与我们常用的mysql等关系型数据库的存储方式不同,mysql中的所有列的数据是按照行级别进行存储的,查询数据要整个一行查询出来,不想要的字段也需要…...
完成程序《大奖赛评分B》
学习目标: 使用代码完成程序《大奖赛评分B》 题目: 如今许多歌手大奖赛评分时,为了体现公平,在评委给出分数后统计平均得分时,都会去掉最高分和最低分。编写程序,读入评委打分(分数都是大于0的…...
K8S篇(基本介绍)
目录 一、什么是Kubernetes? 二、Kubernetes管理员认证(CKA) 1. 简介 2. 考试难易程度 3. 考试时长 4. 多少分及格 5. 考试费用 三、Kubernetes整体架构 Master Nodes 四、Kubernetes架构及和核心组件 五、Kubernetes各个组件及功…...
linux alsa-lib snd_pcm_open函数源码分析(三)
欢迎直接到博客 linux alsa-lib snd_pcm_open函数源码分析(三) 系列文章其他部分: linux alsa-lib snd_pcm_open函数源码分析(一) linux alsa-lib snd_pcm_open函数源码分析(二) linux alsa-lib snd_pcm_open函数源码分析(四…...
基于ssm的个人健康管理系统
项目描述 临近学期结束,还是毕业设计,你还在做java程序网络编程,期末作业,老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下,你想解决的问…...
Debian下载ISO镜像的方法
步骤 1:访问Debian官方网站 打开你的网络浏览器,在地址栏中输入 https://www.debian.org/ 并回车,这将带你到Debian的官方网站。 步骤 2:导航到下载页面 在Debian官方网站的首页上,找到并点击“Download Debian”或类…...
大厂面试真题-简单说说线程池接到新任务之后的操作流程
线程池在接到新任务后的操作流程通常遵循以下步骤,这些步骤确保了任务的高效管理和执行。 一、判断当前线程状态 线程池首先会判断当前是否存在空闲线程,即没有正在执行任务且未被标记为死亡的线程。 有空闲线程:如果存在空闲线程…...
eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)
说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...
【根据当天日期输出明天的日期(需对闰年做判定)。】2022-5-15
缘由根据当天日期输出明天的日期(需对闰年做判定)。日期类型结构体如下: struct data{ int year; int month; int day;};-编程语言-CSDN问答 struct mdata{ int year; int month; int day; }mdata; int 天数(int year, int month) {switch (month){case 1: case 3:…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...
【Android】Android 开发 ADB 常用指令
查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
适应性Java用于现代 API:REST、GraphQL 和事件驱动
在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...
stm32wle5 lpuart DMA数据不接收
配置波特率9600时,需要使用外部低速晶振...
QT开发技术【ffmpeg + QAudioOutput】音乐播放器
一、 介绍 使用ffmpeg 4.2.2 在数字化浪潮席卷全球的当下,音视频内容犹如璀璨繁星,点亮了人们的生活与工作。从短视频平台上令人捧腹的搞笑视频,到在线课堂中知识渊博的专家授课,再到影视平台上扣人心弦的高清大片,音…...
数据库正常,但后端收不到数据原因及解决
从代码和日志来看,后端SQL查询确实返回了数据,但最终user对象却为null。这表明查询结果没有正确映射到User对象上。 在前后端分离,并且ai辅助开发的时候,很容易出现前后端变量名不一致情况,还不报错,只是单…...
