《Python学习手册 第五版》 -第28章 一个更加实际的示例

前面的章节讲解了类的基础,本章内容主要是通过一个实际完整的示例来说明类的使用

本章重点内容:

1、步骤一:创建实例

2、步骤二:添加行为方法

3、步骤三:运算符重载

4、步骤四:通过编写子类定制行为

5、步骤五:定制构造函数

6、步骤六:使用内省工具

7、步骤七:把对象存储到数据库中

接下来,分步骤讲解重点内容,如下:

这个实际的示例是围绕员工人员和管理者人员进行的,所以主要会涉及到两类人群

1、步骤一:创建实例

首先我们创建一个Person的类,代表所有人员:我们单独用一个py的文件存放代码,然后通过另一个程序来使用这个代码

创建一个person的文件,代码如下:

 

 

 最后两行代码是创建了bob实例,来验证我们创建的类,接下来,运行代码,如下:

 

 

 这是一个新的语法,在jupyter notebook中,直接用run来运行.py文件即可

好了,我们已经创建了一个类,我们看下有什么可以精进的

1)在创建实例的时候,需要三个信息都提供,但是实际情况中,有可能只提供姓名,工作和工资会再补充,这个时候需要运行我们用默认值参数

2)这个代码是单独的文件,所以我们想在运行时,判断是单独运行还是被别人导入,在被被人导入使用时,希望能将我们的测试代码屏蔽掉

基于以上两点,我们代码精进如下:

 

 

 然后,我们来运行一下代码:

 

 

 好的,第一步完成

2、步骤二:添加行为方法

对于员工,有时候我们想知道他们的姓,也想调整他们的工资,针对这两个需求,我们编写对应的行为方法

想知道他们的姓,可以通过split函数,代码如下:

 

 

 运行代码,我们看下结果:

 

 

 是我们想要的结果,接下看,如何通过一个函数来调整员工的工资,具体代码如下:

 

 

 我们运行代码,看下结果:

 

 

 有实现我们想要的结果,我们进行下一步

3、步骤三:运算符重载

截止现在,对于已有的代码中,其中print的代码,你会发现,每次都要调用实例的属性,所以我们想直接打印实例,且是我们想要的格式,代码调整如下:

 

 

 红色标注的部分,就是我们调整的代码,此处需要特别说明的,就是【__repr__】是特殊的函数,也就是说,如果打印该类,系统会默认调用该方法,是系统制定的

我们运行代码,看下结果:

 

 

 4、步骤四:通过编写子类定制行为

对于一个员工的基本属性和行为,我们已经设定好了,接下来,我们创建管理者,通过类的继承可以定制管理者的行为,具体代码如下:

 

 

 此处我们定制了Manager类的工资修改方式,我们假定管理者在调整工资的基础上,会默认再增加10%,也就是说增加20%

我们看下代码运行结果:

 

 

 5、步骤五:定制构造函数

再仔细观察Manager类,当我们创建该类时,其实隐含默认了,该类就是管理者,所以在job一项,我们想省略填写,请系统默认调整为“mgr”,所以我们可以定制构造函数,具体如下:

 

 

 6、步骤六:使用内省工具

什么是内省工具?这是一类统称,简单的来说,就是查看内部信息的工具,比如此处,查看类自己的名称,类的名称是可以通过类的【__class__.__name__】来查看的

上面的代码,运行后的现实你会发现,tom现实的类名字,还是Person,所以我们想调整为Manager,也就是说用类自己的名字,具体代码如下如下:

 

 

 我们运行代码,看下结果:

 

 

 从结果看,每个类都显示了自己类的名称,符合我们的要求

7、步骤七:把对象存储到数据库中

此处使用的是shelve,不会详细展开,只是说明是如果用shelve来存储数据和查看数据的,

首先,单独一个文件,来编写代码,存储数据:

 

 

 运行这个代码,来存储三个实例对象,运行如下:

 

 

 运行后,系统应该是没有显示,说明运行通过,如果提示错误,要看具体什么问题,我在第一次运行时提示错误,然后重新打开了一个代码编辑页面,我猜想是导入模块的时候,需要一次全新的导入,

我们存储完了,那我们怎么查看存储的内容呢?具体代码如下:

 

 

 查看存储的内容,还是要导入shelve,还是要打开我们之前创建的文件,然后通过你熟悉的方式,可以随意查看里面的内容,例如你可以查看keys值等等

 

 

 以上,就是本章讲解的内容,主要是通过一个示例,一步一步来展示和说明类的使用,下章见!

 

《Python学习手册 第五版》 每章时间规划及完成进度:

2019.11.25-2019.12.01 第01章,已完成:《Python学习手册 第五版》 -第1章 问答环节

2019.12.02-2019.12.08 第02章,已完成:《Python学习手册 第五版》 -第2章 Python如何运行程序

2019.12.09-2019.12.15 第03章,已完成:《Python学习手册 第五版》 -第3章 你应如何运行Python程序

2019.12.16-2019.12.22 第04章,已完成:《Python学习手册 第五版》 -第4章 介绍Python对象类型

2019.12.23-2019.12.29 第05章,已完成:《Python学习手册 第五版》 -第5章 数值类型

2019.12.30-2020.01.05 第06章,已完成:《Python学习手册 第五版》 -第6章 动态类型

2020.01.06-2020.01.12 第07章,已完成:《Python学习手册 第五版》 -第7章 字符串基础

2020.01.12-2020.01.19 第08章,已完成:《Python学习手册 第五版》 -第8章 列表与字典

2020.01.20-2020.01.26 第09章,已完成:《Python学习手册 第五版》 -第9章 元组、文件与其他核心类型

2020.01.27-2020.02.02 第10章,已完成:《Python学习手册 第五版》 -第10章 Python语句简介

2020.02.03-2020.02.09 第11章,已完成:《Python学习手册 第五版》 -第11章 赋值、表达式和打印

2020.02.10-2020.02.16 第12章,已完成:《Python学习手册 第五版》 -第12章 if测试和语法规则

2020.02.17-2020.02.23 第13章,已完成:《Python学习手册 第五版》 -第13章 while循环和for循环

2020.02.24-2020.03.01 第14章,已完成:《Python学习手册 第五版》 -第14章 迭代和推导

2020.03.02-2020.03.08 第15章,已完成:《Python学习手册 第五版》 -第15章 文档

2020.03.09-2020.03.15 第16章,已完成:《Python学习手册 第五版》 -第16章 函数基础

2020.03.16-2020.03.22 第17章,已完成:《Python学习手册 第五版》 -第17章 作用域

2020.03.23-2020.03.29 第18章,已完成:《Python学习手册 第五版》 -第18章 参数

2020.03.30-2020.04.05 第19章,已完成:《Python学习手册 第五版》 -第19章 函数的高级话题

2020.04.06-2020.04.12 第20章,已完成:《Python学习手册 第五版》 -第20章 推导和生成

2020.04.13-2020.04.19 第21章,已完成:《Python学习手册 第五版》 -第21章 基准测试

2020.04.20-2020.04.26 第22章,已完成 :《Python学习手册 第五版》 -第22章 模块:宏伟蓝图

2020.04.27-2020.05.03 第23章,已完成:《Python学习手册 第五版》 -第23章 模块代码编写基础

2020.05.04-2020.05.10 第24章,已完成:《Python学习手册 第五版》 -第24章 模块包

2020.05.11-2020.05.17 第25章,已完成:《Python学习手册 第五版》 -第25章 高级模块话题

2020.05.18-2020.05.24 第26章,已完成:《Python学习手册 第五版》 -第26章 OOP:宏伟蓝图

2020.05.25-2020.05.31 第27章,已完成:《Python学习手册 第五版》 -第27章 类代码编写基础

2020.06.01-2020.06.07 第28章,已完成

2020.06.08-2020.06.14 第29章,未完成

2020.06.15-2020.06.21 第30章,未完成

2020.06.22-2020.06.28 第31章,未完成

2020.06.29-2020.07.05 第32章,未完成

 

 

以下链接,可以供你了解这个学习笔记的所有章节最新进度

自学笔记系列:《Python学习手册 第五版》 -写在开始之前

 

posted @ 2020-05-02 23:45  诡刺-ThornSoul  阅读(301)  评论(0编辑  收藏  举报