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

news2024/10/6 12:26:49

学习内容:《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_name
        self.last_name = last_name
        self.age = age
        self.job = job

    def 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_name
        self.last_name = last_name
        self.age = age
        self.job = job

    def 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 = make
        self.model = model
        self.year = year
        self.odometer_reading = 0

    def 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 = mileage
        else:
            print("You can't roll back an odometer!")

    def increment_odometer(self,miles):
        self.odometer_reading += miles
        
class Battery:
    def __init__(self,battery_size=90):
        self.battery_size = battery_size

    def 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.coloradmin.cn/o/1869173.html

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

相关文章

linux绝对路径与相对路径区别简述

绝对路径与相对路径定义 绝对路径:相对于根路径,只要文件不移动位置,那么它的绝对路径是永恒不变的 相对路径:相对于当前所在目录而言,当前所在的目录可能会改变,所以相对路径不是固定的 路径&#xff…

算法基础入门 - 1.排序

文章目录 算法基础入门第一章:排序1.1 桶排序1.2 冒泡排序1.3 快速排序1.4 买书问题算法基础入门 第一章:排序 1.1 桶排序 该算法好比桶,假设有11个桶,编号从0-11。每出现一个数,就往对应编号的桶中放入旗子,只需要数桶中旗子的个数即可。比如2号桶有1个旗子,表示2出…

从零开始做一辆简易麦克纳姆轮小车

一、前期准备 麦克纳姆轮小车(Mecanum wheel robot)是一种能够实现全向移动的机器人,其核心在于使用了特殊设计的麦克纳姆轮。要从头开始制作一辆麦克纳姆轮小车,你可能需要准备以下组件和工具: 1. 材料和部件 麦克纳…

AIGC在游戏行业落地如何了?一起看看这篇文章

在2023年初AIGC开始被大众所认知的时候,游戏领域的股票一片飘红,AIGC被认为可以赋能游戏制作的各个环节,游戏板块(BK1046)从2023年初的800左右到2023年中翻倍至1600左右。 到今天,距离这个概念普及一年半有余,期待的效…

vscode安装lean4

本教程演示在Windows系统下如何安装Lean 4正式版。Linux和MacOS版本请参考Lean Manual。 如果你身在中国,在运行安装程序前需要做如下准备: 在系统目录C:\Windows\System32\drivers\etc文件夹下找到hosts文件。对于其它系统用户也都是找到各自系统的host…

Mind+在线图形编程软件(Sractch类软件)

Scratch作为图形编程软件,可以为小朋友学习编程提供很好的入门,是初次接触编程的小朋友的首选开发软件。这里介绍的Mind软件与Sractch用法几乎完全一致,并且可以提供在线免安装版本使用,浏览器直接打开网址: ide.mindp…

各省药品集中采购平台-地方药品集采分析数据库

国家第十批药品集中采购的启动时间暂未明确,但即将到来,在5月,国家医保局发布了《关于加强区域协同做好2024年医药集中采购提质扩面的通知》,其中明确指出将“开展新批次国家组织药品和医用耗材集中带量采购,对协议期满…

python爬虫--scrapy框架

Scrapy 一 介绍 Scrapy简介 1.Scrapy是用纯Python实现一个为了爬取网站数据、提取结构性数据而编写的应用框架,用途非常广泛2.框架的力量,用户只需要定制开发几个模块就可以轻松的实现一个爬虫,用来抓取网页内容以及各种图片,非…

模拟物理弧线轨道运动(模拟飞盘,子弹运动)

模拟物理弧线运动(模拟飞盘) 介绍实现代码总结 介绍 模拟弧线的运动,并且对象始终朝向运动的方向,模拟飞盘子弹的运动轨迹。这里我是没有加重力这么一个概念的,当然了重力其实比较简单可以参考我之前写的模拟抛物线运动…

2024十大首码地推拉新app平台,一手首码对接平台!

到了2024年,地推新应用的接单平台成为创业者们关注的焦点。对于地推行业的从业人员而言,选择一家拥有一手单资源的平台至关重要,因为这直接关系到他们的利益。 2024年如果想要进行app地推活动,却没有人脉渠道的困扰,建…

ABB机器人控制柜各模块指示灯状态说明

ABB机器人控制柜各模块指示灯状态说明 主计算机模块位于控制柜的正前方,负责机器人的各种运算处理,安全模块主要负责安全相关的信号处理,驱动单元模块用于接收上位机指令,驱动机器人运动,轴计算机模块用于接收主计算机的运动指令和串

VMware的具体使用

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 一🌤️VMware的安…

直播怎么录制视频?直播视频,3种录制方法

“今晚我最喜欢的游戏博主要进行直播,但我可能还要加班。怎么办,不想错过直播的内容!电脑怎么才能进行直播录制视频啊?谁能教教我?” 在数字化的今天,直播已经成为人们获取信息和娱乐的重要途径。有时&…

无线麦克风推荐哪些品牌,一文揭秘无线麦克风领夹哪个牌子好!

​究竟该如何选择麦克风呢?又该如何挑选无线麦克呢?询问我关于麦克风选择问题的人着实不少。对于那些仅仅是想要简单地自我娱乐的朋友而言,着实没必要去折腾,直接使用手机自带的麦克风便可以了。 但若是处于想要直播、拍摄短视频…

文本分类-RNN-LSTM

1.前言 本节介绍RNN和LSTM,并采用它们在电影评论数据集上实现文本分类,会涉及以下几个知识点。 1. 词表构建:包括数据清洗,词频统计,词频截断,词表构建。 2. 预训练词向量应用:下载并加载Glove的…

端到端图像分类算法开发实战:从 Arm 虚拟硬件到 Grove Vision AI Module V2 物理硬件

端到端图像分类算法开发实战:从 Arm 虚拟硬件到 Grove Vision AI Module V2 物理硬件 文章目录 1. 写在前面2. 产品简介2.1 Arm 虚拟硬件镜像产品简介2.2 Grove - Vision AI V2 产品简介 3. 实验前准备4. 实验步骤4.1 模型训练4.2 Arm 虚拟硬件镜像上的部署测试4.2…

【HarmonyOS NEXT】har 包的构建生成过程

Har模块文件结构 构建HAR 打包规则 开源HAR除了默认不需要打包的文件(build、node_modules、oh_modules、.cxx、.previewer、.hvigor、.gitignore、.ohpmignore)和.gitignore/.ohpmignore中配置的文件,cpp工程的CMakeLists.txt,…

【Python机器学习】自动化特征选择——迭代特征选择

在单变量测试中,没有使用模型;在基于模型的选择中,使用单个模型来选择特征。而在迭代特征选择中,将会构造一系列模型,每个模型都使用不同数量的特征。有两种基本方法: 1、开始时没有特征,然后逐…

【MySQL基础篇】概述及SQL指令:DDL及DML

数据库是一个按照数据结构来组织、存储和管理数据的仓库。以下是对数据库概念的详细解释:定义与基本概念: 数据库是长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。 数据库不仅仅是数据的简单堆积,而是遵循一定的规则…

聚合项目学习

首先建立一个总的工程目录,里边后期会有我们的父工程、基础工程(继承父工程)、业务工程(依赖基础工程)等模块 1、在总工程目录中(open一个空的文件夹),首先建立一个父工程模块(通过spring init…