Python编程从入门到实践 第九章:类 练习答案记录

news2025/7/31 7:03:04

Python编程从入门到实践 第九章:类 练习答案记录

练习题导航

  • Python编程从入门到实践 第九章:类 练习答案记录
  • 9.1 创建和使用类
    • 9.1.1 创建Dog类
    • 9.1.2 根据类创建实例
      • 练习9-1 餐馆 : 创建一个名为Restaurant 的类, 其方法__init__() 设置两个属性: restaurant_name 和cuisine_type 。 创建一个名为describe_restaurant() 的方法和一个名为open_restaurant() 的方法, 其中前者打印前述两项信息, 而后者打印一条消息, 指出餐馆正在营业。根据这个类创建一个名为restaurant 的实例, 分别打印其两个属性, 再调用前述两个方法。
      • 练习9-2 三家餐馆 : 根据你为完成练习9-1而编写的类创建三个实例, 并对每个实例调用方法describe_restaurant() 。
      • 练习9-3 用户 : 创建一个名为User 的类, 其中包含属性first_name 和last_name , 还有用户简介通常会存储的其他几个属性。 在类User 中定义一个名为describe_user() 的方法, 它打印用户信息摘要; 再定义一个名为greet_user() 的方法, 它向用户发出个性化的问候。
  • 9.2 使用类和实例
    • 9.2.1 Car类
    • 9.2.2 给属性指定默认值
    • 9.2.3 修改属性的值
      • 练习9-4 就餐人数 : 在为完成练习9-1而编写的程序中, 添加一个名为number_served 的属性, 并将其默认值设置为0。
      • 练习9-5 尝试登录次数 : 在为完成练习9-3而编写的User 类中, 添加一个名为login_attempts 的属性。
  • 9.3 继承
    • 9.3.1 子类的方法__init__()
    • 9.3.2 给子类定义属性和方法
    • 9.3.3 重写父类的方法
    • 9.3.4 将实例用作属性
    • 9.3.5 模拟实物

9.1 创建和使用类

9.1.1 创建Dog类

9.1.2 根据类创建实例

练习9-1 餐馆 : 创建一个名为Restaurant 的类, 其方法__init__() 设置两个属性: restaurant_name 和cuisine_type 。 创建一个名为describe_restaurant() 的方法和一个名为open_restaurant() 的方法, 其中前者打印前述两项信息, 而后者打印一条消息, 指出餐馆正在营业。根据这个类创建一个名为restaurant 的实例, 分别打印其两个属性, 再调用前述两个方法。

class Restaurant:

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type

    def describe_restaurant(self):
        print(f"restaurant_name:{self.restaurant_name}")
        print(f"cuisine_type:{self.cuisine_type}")

    def open_restaurant(self):
        print("餐馆正在营业")

restaurant=Restaurant('A','a')
restaurant.describe_restaurant()
restaurant.open_restaurant()

在这里插入图片描述

练习9-2 三家餐馆 : 根据你为完成练习9-1而编写的类创建三个实例, 并对每个实例调用方法describe_restaurant() 。

class Restaurant:

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type

    def describe_restaurant(self):
        print(f"restaurant_name:{self.restaurant_name}")
        print(f"cuisine_type:{self.cuisine_type}")

    def open_restaurant(self):
        print("餐馆正在营业")

a=Restaurant('A','a')
b=Restaurant('B','b')
c=Restaurant('C','c')
a.describe_restaurant()
b.describe_restaurant()
c.describe_restaurant()

在这里插入图片描述

练习9-3 用户 : 创建一个名为User 的类, 其中包含属性first_name 和last_name , 还有用户简介通常会存储的其他几个属性。 在类User 中定义一个名为describe_user() 的方法, 它打印用户信息摘要; 再定义一个名为greet_user() 的方法, 它向用户发出个性化的问候。

创建多个表示不同用户的实例, 并对每个实例都调用上述两个方法

class User:

    def __init__(self,first_name,last_name):
        self.first_name=first_name
        self.last_name=last_name

    def describe_user(self):
        print(self.first_name)
        print(self.last_name)

    def greet_user(self):
        print("Hello~")

a=User('A','a')
a.describe_user()
a.greet_user()

在这里插入图片描述

9.2 使用类和实例

9.2.1 Car类

9.2.2 给属性指定默认值

9.2.3 修改属性的值

练习9-4 就餐人数 : 在为完成练习9-1而编写的程序中, 添加一个名为number_served 的属性, 并将其默认值设置为0。

根据这个类创建一个名为restaurant 的实例; 打印有多少人在这家餐馆就餐过, 然后修改这个值并再次打印它。
添加一个名为set_number_served() 的方法, 它让你能够设置就餐人数。 调用这个方法并向它传递一个值, 然后再次打印这个值。
添加一个名为increment_number_served() 的方法, 它让你能够将就餐人数递增。 调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。

1、根据这个类创建一个名为restaurant 的实例; 打印有多少人在这家餐馆就餐过

class Restaurant:

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type
        self.number_served=0

    def describe_restaurant(self):
        print(f"restaurant_name:{self.restaurant_name}")
        print(f"cuisine_type:{self.cuisine_type}")

    def open_restaurant(self):
        print("餐馆正在营业")
restaurant=Restaurant('A','a')
print(f"多少人在这家餐馆就餐过:{restaurant.number_served}")

在这里插入图片描述

2、根据这个类创建一个名为restaurant 的实例,修改这个值并再次打印它。

class Restaurant:

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type
        self.number_served=0

    def describe_restaurant(self):
        print(f"restaurant_name:{self.restaurant_name}")
        print(f"cuisine_type:{self.cuisine_type}")

    def open_restaurant(self):
        print("餐馆正在营业")
restaurant=Restaurant('A','a')
restaurant.number_served=10
print(f"多少人在这家餐馆就餐过:{restaurant.number_served}")

在这里插入图片描述

3、添加一个名为set_number_served() 的方法, 它让你能够设置就餐人数。 调用这个方法并向它传递一个值, 然后再次打印这个值。

class Restaurant:

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type
        self.number_served=0

    def describe_restaurant(self):
        print(f"restaurant_name:{self.restaurant_name}")
        print(f"cuisine_type:{self.cuisine_type}")

    def open_restaurant(self):
        print("餐馆正在营业")

    def set_number_served(self,number_served):
        self.number_served=number_served

restaurant=Restaurant('A','a')
restaurant.set_number_served(11)
print(f"多少人在这家餐馆就餐过:{restaurant.number_served}")

在这里插入图片描述

4、添加一个名为increment_number_served() 的方法, 它让你能够将就餐人数递增。调用这个方法并向它传递一个这样的值:你认为这家餐馆每天可能接待的就餐人数。

class Restaurant:

    def __init__(self,restaurant_name,cuisine_type):
        self.restaurant_name=restaurant_name
        self.cuisine_type=cuisine_type
        self.number_served=0

    def describe_restaurant(self):
        print(f"restaurant_name:{self.restaurant_name}")
        print(f"cuisine_type:{self.cuisine_type}")

    def open_restaurant(self):
        print("餐馆正在营业")

    def set_number_served(self,number_served):
        self.number_served = number_served

    def increment_number_served(self,digit):
        self.number_served += digit

restaurant=Restaurant('A','a')
restaurant.set_number_served(11)
print(f"多少人在这家餐馆就餐过:{restaurant.number_served}")
restaurant.increment_number_served(10)
print(f"多少人在这家餐馆就餐过:{restaurant.number_served}")

在这里插入图片描述

练习9-5 尝试登录次数 : 在为完成练习9-3而编写的User 类中, 添加一个名为login_attempts 的属性。

编写一个名为increment_login_attempts() 的方法,它将属性login_attempts 的值加1。
再编写一个名为reset_login_attempts() 的方法, 它将属性login_attempts 的值重置为0。
根据User类创建一个实例, 再调用方法increment_login_attempts() 多次。
打印属性login_attempts 的值,确认它被正确地递增;
然后, 调用方法reset_login_attempts() , 并再次打印属性login_attempts 的值, 确认它被重置为0。

class User:

    def __init__(self,first_name,last_name):
        self.first_name=first_name
        self.last_name=last_name
        self.login_attempts=0

    def describe_user(self):
        print(self.first_name)
        print(self.last_name)

    def greet_user(self):
        print("Hello~")

    def increment_login_attempts(self):
        self.login_attempts+=1

    def reset_login_attempts(self):
        self.login_attempts=0

user=User('A','a')
user.increment_login_attempts()
user.increment_login_attempts()
user.increment_login_attempts()
print(user.login_attempts)
user.reset_login_attempts()
print(user.login_attempts)

在这里插入图片描述

9.3 继承

9.3.1 子类的方法__init__()

9.3.2 给子类定义属性和方法

9.3.3 重写父类的方法

9.3.4 将实例用作属性

9.3.5 模拟实物

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

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

相关文章

Android 进程间通信(IPC机制)精炼详解

今天主要对 Android 中的跨进程通信进行总结下,先梳理下里面的涉及的一些概念 进程与线程 进程: 系统中正在运行的一个应用程序,某个程序一旦运行就是一个进程,是资源分配的最小单位;线程: 程序执行的最小…

曙光云使用说明

平台链接 https://ac.sugon.com/ac/home/index.html 控制台界面 创建个人工作目录及上传文件。点击概览页面顶端的 E-Shell 菜单栏,进入所连主机的 Shell 终端。在用户目录下新建个人工作目录,如:mkdir ywj2 安装MiniConda(推荐…

Ubuntu20.04 如何开启root账户登陆

环境: 电脑:戴尔7080 系统:Windows 10 专业版 64位 VMware 16.0 :Ubuntu20.04 问题描述: Ubuntu20.04 如何开启root账户登陆 解决方案: 1.以普通用户登录系统,创建root用户的密码 在终端…

Java代码审计——WebGoat XSS

目录 (一)XSS 常见触发位置 1.JSP 表达式 2.EL (二)反射型 XSS (三) 存储型 XSS (四)XSS 漏洞修复 配置过滤器: (一)XSS 常见触发…

HTML期末作业课程设计期末大作业__电影长津湖介绍带视频(6页)

⛵ 源码获取 文末联系 ✈ Web前端开发技术 描述 网页设计题材,DIVCSS 布局制作,HTMLCSS网页设计期末课程大作业 | 摄影作品 | 影视设计网页 | 在线电影 | 视频音频元素 | HTML期末大学生网页设计作业,Web大学生网页 HTML:结构 CSS&#xff1…

uiautomator2的安装,使用,在浏览器中查看页面的信息,简单快捷的ui测试工具,app测试工具(一)

uiautomator2的安装,使用,简单快捷的ui测试工具,app测试工具 安装方法 命令行中输入 pip install uiautomator pip install weditor在andriod studio中启动一个模拟器 启动 python -m weditor即可在浏览器看到弹出的窗口,里面…

【滤波跟踪】基于不变扩展卡尔曼滤波器对装有惯性导航系统和全球定位系统IMU+GPS进行滤波跟踪附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

核苷酸类化合物库 脂类化合物库参与细胞调控

核苷及核苷酸是机体内的一种重要的内源物质,参与细胞的多种生命进程,如 DNA 和 RNA 合成,信号转导及代谢等。核苷及核苷酸类似物是人工合成的,经过一定化学修饰的物质,可以模拟机体内核苷及核苷酸,参与细胞…

Git合并出现MERGING有效解决方法

Git合并出现MERGING有效解决方法错误描述解决办法参考链接错误描述 我在操作git合并时候意外出现了MERGING,很懵逼,如图所示: 遇到这个问题也是很头疼了,百度了很多方法有说是:“在命令行输入:git reset …

“以赛助教”进校园,CCF大数据与计算智能大赛成高校人才探索实践AI技术的第二课堂!

随着第十届CCF大数据与计算智能大赛(简称2022 CCF BDCI)的报名通道关闭、《大咖说系列专题报告》收官,“以赛助教”系列活动也正式宣告结束。 CCF大数据与计算智能大赛(CCF BDCI)由中国计算机学会于2013年创办&#x…

verilog 流水线控制

文章目录Verilog 流水线控制1、关键问题、实现方式及其对比2、实现方式2.1、控流水线输入:根据每一拍的 din_en_d* 打拍,没有最终的 else block2.2、控流水线输入:根据每一拍的 din_en_d* 打拍,有最终的 else block2.3、控流水线每…

真香!宝藏学习方式还可以这样,家人们绝不能错过

文 / 谷雨(微信公众号:王不留) 《谷雨:告诉大家一个小秘密》一文,辛苦码字半夜,阅读量却扑街,我想根本原因是标题名字起得太差。 前几天看了一个不知真假的截屏,说到小红书上的关键词…

Linux挂载Windows端NFS服务(实现板端Linux与PC互传文件)

Linux挂载Windows端NFS服务(实现板端Linux与PC互传文件) 1. kernel编译时打开NFS客户端服务 在宿主机打开kernel文件夹,先make clean,然后make menuconfig,进入配置界面: 使用/查找NFS,找到Ne…

终于有阿里P8从开发、运维两个角度总结出了Redis实战手册

从开发、运维两个角度总结了Redis实战经验,深入浅出地剖析底层实现,包含大规模集群开发与运维的实际案例、应用技巧。 前言Redis作为基于键值对的NoSQL数据库,具有高性能、丰富的数据结构、持久化、高可用、分布式等特性,同时Redi…

Windows10安装Docker(基于WSL2,包含WSL2安装教程)

WSL2 wsl是windows自带的功能,只需要开启Windows功能即可安装子系统 可以通过以下命令获取发行版名字 wsl --list --online通过以下命令安装 wsl --install -d ${发行版名字} 如 wsl --install -d Ubuntu-20.04安装后会弹出来子系统设置用户名密码 运行以下命令…

matlab解下列微分方程

解下列微分方程 &#xff08;1&#xff09;ydsolve(‘Dyxy’,‘y(0)1’,‘x’) y -x-12exp(x) x[1 2 3] x 1 2 3 -x-12exp(x) ans 3.4366 11.7781 36.1711 &#xff08;2&#xff09;x’2x3y,y’2xy,x(0)-2,y(0)2.8,0<t<10,做相平面图 新建M函数 function dyweifen1(…

d盘不见了怎么恢复?数据恢复,一键操作

d盘是我们日常生活中常用的一种硬盘&#xff0c;平时我们会用到 d盘来存储我们平时要用到的文件资料&#xff0c;如文档、图片、视频等。而由于我们日常使用它时都是在 Windows系统下&#xff0c;所以就很容易忽略 d盘的重要性了。当遇到 d盘不见的情况&#xff0c; d盘不见了怎…

php宝塔部署实战ptcms小说管理系统源码带采集规则

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 有个朋友发消息跟我说&#xff0c;他下载了一套ptcms的小说系统&#xff0c;在搭建的时候一直部署不好&#xff0c;这套系统还带有采集功能的&#xff0c;让我帮他看看&#xff0c;我抽空看了并测试了一下&#x…

【菜菜的sklearn课堂笔记】逻辑回归与评分卡-梯度下降求解逻辑回归

视频作者&#xff1a;菜菜TsaiTsai 链接&#xff1a;【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili 我们以最著名也最常用的梯度下降法为例。 现在有一个带两个特征并且没有截距的逻辑回归y(x1,x2)y(x_{1},x_{2})y(x1​,x2​)&#xff0c;两个特征…

【java】 对命名规范的思考——VO,BO,PO,DO,DTO是什么

作为Java开发人员免要接触VO&#xff0c;BO&#xff0c;PO&#xff0c;DO&#xff0c;DTO&#xff0c;但很多朋友对这些概念一直以来都是云里雾里&#xff0c;本来是规范性的东西&#xff0c;使用起来却反而导致更加混乱了。先附上我自己常用的命名习惯&#xff1a; 数据对象&…