一、明确项目目标

需要一个图书管理系统,来帮助他管理书籍的借阅情况。他希望这个简易的程序可以做到:

二、分析过程,拆解项目

第一种用法是使用类生成实例对象。类作为实例对象的模版,每个实例创建后,都将拥有类的所有属性和方法。

第二种用法是用类将多个函数(方法)打包封装在一起,让类中的方法相互配合。

回到项目:我们的处理对象是每本具体的书,而每本书都有自己的属性信息,所以我们可以定义一个Book类,利用Book类创建一个个书的实例,绑定属性(对应用法1)。

而这个管理系统的运行主体,是多个可供选择的功能的叠加,所以我们可以创建一个系统运行类BookManager,将查询书籍、添加书籍等功能封装成类中的方法以供调用(对应用法2)。

三、代码实现,逐步执行

1、定义Book类

要介绍一个更符合编程习惯的方法__str__(self)

只要在类中定义了__str__(self)方法,那么当使用print打印实例对象的时候,就会直接打印出在这个方法中return的数据。

class Book:

def __init__(self, name, author, comment, state = 0):

self.name = name

self.author = author

self.comment = comment

self.state = state

def __str__(self):

if self.state == 0:

status = '未借出'

else:

status = '已借出'

return '名称:《%s》 作者:%s推荐语:%s\n状态:%s' % (self.name, self.author, self.comment, status)

book1 = Book('像自由一样美丽','林达','你要用光明来定义黑暗,用黑暗来定义光明')

# 传入参数,创建实例对象

print(book1)

# 直接打印对象即可,不能写成print(book1.__str__())

2、类BookManager的编写

menu()是与用户互动的界面,刚刚我们已经给出了demo:

内部逻辑如下:

1.查询所有书籍

# 调用方法show_all_book()

2.添加书籍

# 调用方法add_book()

3.借阅书籍

# 调用方法lend_book()

4.归还书籍

# 调用方法return_book()

5.退出系统

请输入数字选择对应的功能:

class BookManager:

books = []

# 创建一个列表,列表里每个元素都是Book类的一个实例

def __init__(self):

book1 = Book('惶然录','费尔南多·佩索阿','一个迷失方向且濒于崩溃的灵魂的自我启示,一首对默默无闻、失败、智慧、困难和沉默的赞美诗。')

book2 = Book('以箭为翅','简媜','调和空灵文风与禅宗境界,刻画人间之缘起缘灭。像一条柔韧的绳子,情这个字,不知勒痛多少人的心肉。')

book3 = Book('心是孤独的猎手','卡森·麦卡勒斯','我们渴望倾诉,却从未倾听。女孩、黑人、哑巴、醉鬼、鳏夫的孤独形态各异,却从未退场。', 1)

# 创建三个实例对象

self.books.append(book1)

self.books.append(book2)

self.books.append(book3)

# 往列表依次添加元素,注意调用类属性books时,self不能丢

# self.books = [book1, book2, book3]

# 上面三行代码,可简化为一行,即直接创建列表。这种情况下,可不用在前面创建空列表。

风变python基础语法第11关_Python基础语法学习笔记之风变第十四关项目实操相关推荐

  1. python定义函数的组成部分有_Python文档学习笔记(4)--定义函数

    定义函数 关键字 def 引入函数的定义.其后必须跟有函数名和以括号标明的形式参数列表.组成函数体的语句从下一行开始,且必须缩进. 执行 一个函数会引入一个用于函数的局部变量的新符号表. 因此,在函数 ...

  2. python语句x 3 3执行_Python 3.x 学习笔记--杂

    在交互式环境中,编译器会有一个小整数池的概念,会把(-5,256)间的数预先创建好,而当a和b超过这个范围的时候,两个变量就会指向不同的对象了,因此地址也会不一样, http://www.runoob ...

  3. python爬取京东手机数据_Python数据爬虫学习笔记(21)爬取京东商品JSON信息并解析...

    一.需求:有一个通过抓包得到的京东商品的JSON链接,解析该JSON内容,并提取出特定id的商品价格p,json内容如下: jQuery923933([{"op":"75 ...

  4. Python语言入门这一篇就够了-学习笔记(十二万字)

    Python语言入门这一篇就够了-学习笔记(十二万字) 友情提示:先关注收藏,再查看,12万字保姆级 Python语言从入门到精通教程. 文章目录 Python语言入门这一篇就够了-学习笔记(十二万字 ...

  5. 《Python核心编程(第3版)》学习笔记及书评

    <Python核心编程(第3版)>学习笔记 文章目录 <Python核心编程(第3版)>学习笔记 写在前面 1. 正则表达式 1.1 常用语法 1.2 re模块 2. 网络编程 ...

  6. 计算机基础与程序设计(基于C语言)学习笔记

    计算机基础与程序设计(基于C语言)学习笔记 前言 这是一个学习笔记 课程导入 在线学习工具:https://c.runoob.com/compile/11 为什么要学习程序设计 (1)存储程序和程序控 ...

  7. python 爬虫(项目实操)

    用BeautifulSoup库解析数据和提取数据,解析数据的方法是: 提取数据的方法是用find() 与find_all() 最后,我们把事情串起来,就变成下图中的模样.它所对应的,正是爬虫四步中的前 ...

  8. 【codecombat】 试玩全攻略 第十四关 已知敌人

    第十四关 已知敌人 在这一关里,我们的英雄获得了一副可以看见敌人的眼镜,所以他很强势的学会了"发现敌人"的技能. hero.findNearestEnemy()命令,单词多了,首字 ...

  9. 【Python学习笔记—保姆版】第四章—关于Pandas、数据准备、数据处理、数据分析、数据可视化

    第四章 欢迎访问我搞事情的[知乎账号]:Coffee 以及我的[B站漫威剪辑账号]:VideosMan 若我的笔记对你有帮助,请用小小的手指,点一个大大的赞哦. #编译器使用的是sypder,其中&q ...

最新文章

  1. Spark的RDD 文件读取与保存
  2. 投资狂人陈一舟:哪里火爆投哪里
  3. Blockchain技术之区块链的应用领域——智能合约
  4. Archive for required library: ‘WebContent/WEB-INF/lib/xxx.jar cannotn
  5. 特定视图呈现时发生的事件顺序
  6. 求和函数sumx_PowerBI公式-SUMX 函数
  7. Python基础之字典
  8. 限时删!我亲自整理一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)...
  9. srs2.0安装问题
  10. L2Dwidget.js L2D网页动画人物添加
  11. 数据结构c语言版编程软件,数据结构严蔚敏4版PDF下载_数据结构C语言版严蔚敏下载 完整版_当载软件站...
  12. Unity shader入门精要-第一章笔记
  13. 达梦数据库基础知识(七)如何管理表
  14. P8842 [传智杯 #4 初赛] 小卡与质数2 题解
  15. vivo手机系统打印服务器,原来vivo手机自带扫描功能,文件瞬间电子化!几千的扫描仪省下了...
  16. 编程 - 变量的命名方法
  17. devm_ioremap_resource devm_ioremap 区别
  18. ThinkPHP模版引擎之变量输出具体解释
  19. 免费论文检测 论文查重 软件 系统 论文免费检测 论文抄袭检测大师
  20. Powermill编程和UG编程的区别

热门文章

  1. 阿里云python面试题_Python金典面试题
  2. Linux C: 为什么C都必须有一个main函数
  3. a*算法流程图_如何从0开始,搭建A/B test平台产品?
  4. 启明云端应用分享|基于乐鑫 ESP-WIFI-MESH 的智能自助洗衣房
  5. java 多线程 start,Java 线程的run()和start()
  6. java大型wms架构设计_Java生鲜电商平台-库存管理设计与架构
  7. 实时对讲是怎么发起的_QQ可实时显示手机电量并展示给好友 近半投票者支持该功能...
  8. 前端数据的加密和解密--对象解密的坑
  9. Android 6.0动态权限
  10. windows时间显示到秒