【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”或类…...
大厂面试真题-简单说说线程池接到新任务之后的操作流程
线程池在接到新任务后的操作流程通常遵循以下步骤,这些步骤确保了任务的高效管理和执行。 一、判断当前线程状态 线程池首先会判断当前是否存在空闲线程,即没有正在执行任务且未被标记为死亡的线程。 有空闲线程:如果存在空闲线程…...
COMSOL能源开采仿真:基质中瓦斯扩散、裂隙中瓦斯渗流,分析不同工况条件下渗透率演化、有效抽...
COMSOL能源开采仿真:基质中瓦斯扩散、裂隙中瓦斯渗流,分析不同工况条件下渗透率演化、有效抽采半径、抽采产量。 使用模块:PDE(基质瓦斯扩散),达西定律/PDE(裂隙瓦斯渗流)࿰…...
零代码部署GEMMA-3像素工作站:复古界面下的多模态AI体验
零代码部署GEMMA-3像素工作站:复古界面下的多模态AI体验 1. 开篇:当JRPG美学遇上多模态AI 想象一下,90年代经典日式角色扮演游戏的像素风格界面,与现代最先进的多模态AI技术完美融合——这就是GEMMA-3像素工作站带给我们的独特体…...
从nvidia-smi到npu-smi:给CUDA开发者的华为昇腾NPU监控指南
从nvidia-smi到npu-smi:CUDA开发者快速掌握昇腾NPU监控的实战手册 当你的技术栈从英伟达GPU扩展到华为昇腾NPU时,监控工具的使用体验就像从自动挡切换到手动挡——虽然最终目的地相同,但操作逻辑需要重新适应。作为曾经每天与nvidia-smi打交道…...
OpenClaw+Qwen3-32B科研助手:文献综述自动化实践
OpenClawQwen3-32B科研助手:文献综述自动化实践 1. 为什么需要自动化文献综述 作为一名计算机视觉方向的博士生,我每周需要阅读数十篇论文。传统的工作流程是:手动下载PDF→逐篇阅读→摘录关键观点→整理成表格。这个过程不仅耗时ÿ…...
WorkshopDL:跨平台Steam创意工坊下载器,突破平台限制获取海量模组资源
WorkshopDL:跨平台Steam创意工坊下载器,突破平台限制获取海量模组资源 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否曾在Epic Games或GOG平台购…...
Cadence 617实战:手把手教你搞定电流镜负载差分放大器的仿真与优化
Cadence 617实战:手把手教你搞定电流镜负载差分放大器的仿真与优化 在模拟集成电路设计中,电流镜负载差分放大器是一个经典而重要的电路结构。它不仅出现在各类运算放大器的输入级,也是理解模拟电路设计原理的绝佳案例。本文将带你从工具实操…...
保姆级教程:在Windows上用PyTorch 2.0复现PointNet(含数据集下载与常见坑点修复)
Windows平台PyTorch 2.0实战:从零构建PointNet点云处理模型全指南 当3D点云处理遇上深度学习,PointNet无疑是这个领域的里程碑式架构。不同于传统CNN处理规则网格数据的方式,PointNet开创性地直接处理无序点云数据,在分类和分割任…...
DanKoe 视频笔记:生产力提升:战术压力与深度工作策略
在本节课中,我们将学习一种结合了“战术压力”与“深度工作”的策略。这套方法帮助一位自称拖延症患者的人在30天内创造了70万美元的收入。我们将拆解其核心原理与具体执行步骤,让初学者也能理解并应用。 概述 拖延常被视为缺点,但本教程提…...
多核系统RingBuff通信机制与实现原理
多核系统RingBuff通信机制深度解析1. 核间通信基础架构1.1 共享内存通信原理在多核处理器系统中,主核与从核之间的通信通常采用共享内存机制。这种设计通过以下核心组件实现:共享内存区域:预先分配的可被多个核访问的物理内存空间核间中断&am…...
非线性奇异谱分解算法:精细化处理时间序列数据,提取CSV文件信号特征,生成希尔伯特谱分析报告
SSD–fft–hht,奇异谱分解算法,是对原始小波分解的一种改进,对小波分解中的高频部分进行二次分解,提高分辨率。 一种非线性时间序列分解方法,可用于处理各种复杂数据,包括金融,气候,…...
