python-18-零基础自学python 类和子类的基础练习

学习内容:《python编程:从入门到实践》第二版

知识点:

类,父类与子类的继承,调用函数方法等。

练习内容:

练习9-7:管理员 管理员是一种特殊的用户。编写一个名为Admin的类,让它继承为完成练习9-3或练习9-5而编写的User类。添加一个名为privileges的属性,用于存储一个由字符串(如"can add post"、"can delete post"、"can ban user"等)组成的列表。编写一个名为show_privileges()的方法,显示管理员的权限。创建一个Admin实例,并调用这个方法。

练习9-8:权限 编写一个名为Privileges的类,它只有一个属性privileges,其中存储了练习9-7所述的字符串列表。将方法show_privileges()移到这个类中。在Admin类中,将一个Privileges实例用作其属性。创建一个Admin实例,并使用方法show_privileges()来显示其权限。

练习9-9:电瓶升级 在本节最后一个electric_car.py版本中,给Battery类添加一个名为upgrade_battery()的方法。该方法检查电瓶容量,如果不是100,就将其设置为100。创建一辆电瓶容量为默认值的电动汽车,调用方法get_range(),然后对电瓶进行升级,并再次调用get_range()。你将看到这辆汽车的续航里程增加了。

我的代码&运行结果:

class User:def __init__(self,first_name,last_name,age,job):self.first_name = first_nameself.last_name = last_nameself.age = ageself.job = jobdef describe_user(self):print(f"用户信息如下:")print(f"姓名:{self.first_name} {self.last_name}")print(f"年龄:{self.age}")print(f"职业:{self.job}")def greet_user(self):print(f"Hello, {self.first_name} {self.last_name}\n")class Admin(User):def __init__(self,first_name,last_name,age,job):super().__init__(first_name,last_name,age,job)def show_privileges(self):privileges =["can add post","can delete post","can ban user"]for privilege in privileges:print(f"the adminer's privileges :{privilege}")admin1 = Admin('朱','大','10','学生')
admin1.describe_user()
admin1.greet_user()
admin1.show_privileges()

练习

class User:def __init__(self,first_name,last_name,age,job):self.first_name = first_nameself.last_name = last_nameself.age = ageself.job = jobdef describe_user(self):print(f"用户信息如下:")print(f"姓名:{self.first_name} {self.last_name}")print(f"年龄:{self.age}")print(f"职业:{self.job}")def greet_user(self):print(f"Hello, {self.first_name} {self.last_name}\n")class Privileges:def show_privileges(self):privileges =["can add post","can delete post","can ban user"]for privilege in privileges:print(f"the adminer's privileges :{privilege}")class Admin(User):def __init__(self,first_name,last_name,age,job):super().__init__(first_name,last_name,age,job)self.privileges = Privileges()admin1 = Admin('朱','大','10','学生')
admin1.describe_user()
admin1.greet_user()
admin1.privileges.show_privileges()

 

练习

class Car:"""一次模拟汽车的简单尝试。"""def __init__(self,make,model,year):self.make = makeself.model = modelself.year = yearself.odometer_reading = 0def get_descriptive_name(self):long_name = f"{self.year} {self.make} {self.model}"return long_name.title()def read_odometer(self):print(f"This car has {self.odometer_reading} miles on it.")def update_odometer(self,mileage):if mileage >= self.odometer_reading:self.odometer_reading = mileageelse:print("You can't roll back an odometer!")def increment_odometer(self,miles):self.odometer_reading += milesclass Battery:def __init__(self,battery_size=90):self.battery_size = battery_sizedef describe_battery(self):print(f"This car has a {self.battery_size}-kWh battery.")def upgrade_battery(self):if self.battery_size != 100:self.battery_size = 100#print(f"This car has updated, with a {self.battery_size}-kWh battery.")class ElectricCar(Car):def __init__(self,make,model,year):super().__init__(make,model,year)self.battery = Battery()#注意这里的self.battery 和class battery里面的self.battery_size弄混淆了!my_tesla = ElectricCar('tesla','model s',2019)
print(my_tesla.get_descriptive_name())
my_tesla.battery.describe_battery()
my_tesla.battery.upgrade_battery()my_tesla.battery.describe_battery()

总结&问题:

1.每一个类里面的属性名字切记不能混淆

2.def __init__(self,battery_size=90)新增属性的原始值,可在定义的时候给出,可以先不写出

3.super().__init__(make,model,year)继承时,什么时候有self,super后的()等细节容易错

4.self.battery = Battery()子类和某一特性单独建立的类之间一定不能忘记这部分联系。

5.my_tesla.battery.describe_battery()调用函数时,不能忘记中间需要加上类的名字再加点。后在加方法。

6.=是等于、赋值,==等于是比较,!=是比较

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

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

相关文章

游泳耳机入耳式好还是骨传导好?游泳教练力荐实力卓绝的四大热款

作为一名长期致力于游泳爱好者健康与运动体验提升的专业教练,我深知在水中听音乐的魅力,同时也深知选择正确的耳机对于水上运动的重要性。近年来,市场上的游泳耳机类型日益丰富,其中入耳式和骨传导两大主流各有千秋。今天&#xf…

springcloud第4季 分布式事务seata作用服务搭建1

一 seata作用 1.1 seata简介 1.seata是一款解决分布式事务的解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 1.2 seata的术语 一个中心:全局事务id,xid,在调用服务链路的上下文中进行传播。TC(Transa…

界面控件Telerik UI for Winforms 2024 Q2新版亮点 - 发布全新的AI相关组件

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for Winform…

golang项目基于gorm框架从postgre数据库迁移到达梦数据库的实践

一、安装达梦数据库 1、登录达梦数据库官网,下载对应系统版本的安装包。 2、下载地址为:https://www.dameng.com/list_103.html 3、达梦数据库对大小写敏感,在安装初始化数据库实例时建议忽略大小写;具体安装教程可参考以下博客: …

C++02 变量和基本类型

基本类型 字、字节、bit、Byte之间的关系 字 word 字节 Byte 位 bit 1字 2字节 <---> 1word 2Byte 1字节 8位 <---> 1Byte 8bit 1Byte 8bits 1KB 1024Bytes 1MB 1024KB 1GB 1024MB #include <iostream> using namespace std; int main() {/*字符…

Brand Finance Retail 100 2024

近日,全球领先的品牌价值评估咨询机构Brand Finance发布了其年度行业研究报告——《Brand Finance Retail 100 2024》。该报告深入分析了全球最有价值的零售品牌及其品牌实力,揭示了品牌价值的变化趋势和品牌强度的排名情况。报告指出,尽管许多顶级零售品牌在品牌价值上遭遇了下…

表达式求值的相关语法知识(C语言)

目录 整型提升 整型提升的意义 整型提升规则 整型提升实例 算术转换 赋值转换 操作符的属性 C语言的语法并不能保证表达式的执行路径唯一&#xff01;&#xff01;&#xff01; 问题表达式 整型提升 C的整型算术运算总是至少以缺省整型类型的精度来进行的。为了获得这…

昇思25天学习打卡营第8天 | 保存与加载 使用静态图加速

保存与加载 在训练网络模型的过程中&#xff0c;实际上我们希望保存中间和最后的结果&#xff0c;用于微调&#xff08;fine-tune&#xff09;和后续的模型推理与部署&#xff0c;下面是介绍如何保存与加载模型。 先定义一个模型用&#xff1a; import numpy as np import m…

每个 Node.js 开发人员都应该知道的13个库(上)

1. Sequelize Sequelize是一个基于promise的Node.js对象关系映射器&#xff08;ORM&#xff09;&#xff0c;它使开发人员更容易使用关系数据库。 支持PostgreSQL&#xff0c;MySQL&#xff0c;MariaDB&#xff0c;SQLite和更多数据库。 Sequelize使用JavaScript对象对数据库…

@PathVariable注解的使用及源码解析

前言 PathVariable 注解是我们进行JavaEE开发&#xff0c;最常见的几个注解之一&#xff0c;这篇博文我们以案例和源码相结合&#xff0c;帮助大家更好的了解PathVariable 注解 使用案例 1.获取 URL 上的值 RequestMapping("/id/{id}") public Object getId(Path…

【Python机器学习】单变量非线性变换

添加特征的平方或立方可以改进线性回归模型&#xff0c;其他变换通常也对变换某些特征有用&#xff0c;特别是应用数学函数&#xff0c;比如log、exp、sin等。虽然基于树的模型只关注特征的顺序&#xff0c;但是线性模型和神经网络依赖于每个特征的尺度和分布。如果在特征和目标…

首次线下联合亮相!灵途科技携手AEye、ATI亮相2024 EAC 易贸汽车产业大会

6月22日&#xff0c;2024 EAC 易贸汽车产业大会在苏州国际博览中心圆满落幕&#xff0c;泛自动驾驶领域光电感知专家灵途科技携手自适应高性能激光雷达解决方案全球领导者AEye公司&#xff08;NASDAQ:LIDR&#xff09;及光电器件规模化量产巨头Accelight Technologies&#xff…

量块检定校准中,如何调整好校准所需的温度条件?

量块是计量中常用的标准件&#xff0c;在日常使用中可以作为各类仪器校准中的辅助工具&#xff0c;而量块自身如果进行检定校准&#xff0c;其校准过程中温度的条件就是需要多次进行调控&#xff0c;因为量块的校准需要在恒温环境下进行&#xff0c;量块的精确度和实验室环境的…

触摸屏与罗克韦尔AB PLC之间 ModbusTCP/IP无线以太网通讯实例

在实际系统中&#xff0c;同一个车间里分布多台PLC&#xff0c;通过触摸屏人机界面集中控制。通常所有设备距离在几十米到上百米不等。在有通讯需求的时候&#xff0c;如果布线的话&#xff0c;工程量较大耽误工期&#xff0c;这种情况下比较适合采用无线通信方式。本方案以组态…

操作系统面试篇一

很多读者抱怨计算操作系统的知识点比较繁杂&#xff0c;自己也没有多少耐心去看&#xff0c;但是面试的时候又经常会遇到。所以&#xff0c;我带着我整理好的操作系统的常见问题来啦&#xff01;这篇文章总结了一些我觉得比较重要的操作系统相关的问题比如 用户态和内核态、系统…

昇思25天学习打卡营第9天 | 静态图加速

内容介绍&#xff1a; AI编译框架分为两种运行模式&#xff0c;分别是动态图模式以及静态图模式。MindSpore默认情况下是以动态图模式运行&#xff0c;但也支持手工切换为静态图模式。两种运行模式的详细介绍如下&#xff1a; 动态图模式&#xff1a; 动态图的特点是计算图的…

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF

【Docker项目实战篇】Docker部署PDF多功能工具Stirling-PDF 前言一、Stirling-PDF介绍1.1 Stirling-PDF简介1.2 Stirling-PDF功能 二、本次实践规划2.1 本地环境规划2.2 本次实践介绍 三、本地环境检查3.1 检查Docker服务状态3.2 检查Docker版本3.3 检查docker compose 版本 四…

详解Elastic Search高速搜索背后的秘密:倒排索引

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 全文搜索属于最常见的需求&#xff0c;开源的 Elasticsearch &#xff08;以下简称 Elastic&#xff09;是目前全文搜索引…

Python应用开发——30天学习Streamlit Python包进行APP的构建(10)

st.map 显示一张叠加了散点图的地图。 它是 st.pydeck_chart 的包装器&#xff0c;用于在地图上快速创建散点图表&#xff0c;并具有自动居中和自动缩放功能。 使用该命令时&#xff0c;Mapbox 会提供地图瓦片来渲染地图内容。请注意&#xff0c;Mapbox 是第三方产品&#x…

海云安参编《数字安全蓝皮书 》正式发布并入选《2024中国数字安全新质百强》荣膺“先行者”

近日&#xff0c;国内数字化产业第三方调研与咨询机构数世咨询正式发布了《2024中国数字安全新质百强》&#xff08;以下简称百强报告&#xff09;。海云安凭借在开发安全领域的技术创新力及市场影响力入选百强报告“新质百强先行者” 本次报告&#xff0c;数世咨询经过对国内8…