作者:goodbody

内容简介  

 

Python是一种面向对象、解释型的程序设计语言,它已经被成功应用于科学计算、数据分析以及游戏开发等诸多领域。

本书深入介绍Python语言的面向对象特性,全书分3个部分共18章。第1部分讲述用特殊方法实现Python风格的类,分别介绍了__init__()方法、与Python无缝集成—基本特殊方法、属性访问和特性及修饰符、抽象基类设计的一致性、可调用对象和上下文的使用、创建容器和集合、创建数值类型、装饰器和mixin—横切方面;第2部分讲述持久化和序列化,分别介绍了序列化和保存、用Shelve保存和获取对象、用SQLite保存和获取对象、传输和共享对象、配置文件和持久化;第3部分讲述测试、调试、部署和维护,分别介绍了Logging和Warning模块、可测试性的设计、使用命令行、模块和包的设计、质量和文档。

本书深入剖析Python,帮助读者全面掌握Python并构建出更好的应用程序,非常适合对Python语言有一定了解并想要深入学习Python的读者,也适合有一定开发经验并且想要尝试使用Python语言进行编程的IT从业人员

目录  

第1部分用特殊方法实现Python风格的类1
第1章__init__()方法5
1.1隐式的基类——object5
1.2基类中的__init__()方法6
1.3在基类中实现__init__()方法7
1.4使用__init__()方法创建常量清单8
1.5通过工厂函数调用__init__()9
1.5.1错误的工厂设计和模糊的else语句10
1.5.2使用elif简化设计来获得一致性11
1.5.3使用映射和类来简化设计11
1.6在每个子类中实现__init__()方法14
1.7简单的组合对象16
1.7.1封装集合类16
1.7.2扩展集合类17
1.7.3可适应更多需求的另一种设计17
1.8复合的组合对象18
1.9不带__init__()方法的无状态对象19
1.10一些其他的类定义20
1.11多策略的__init__()方法22
1.11.1更复杂的初始化方式23
1.11.2静态函数的初始化24
1.12更多的__init__()技术24
1.12.1带有类型验证的初始化26
1.12.2初始化、封装和私有化28
1.13总结29
第2章与Python无缝集成——基本特殊方法30
2.1__repr__()和__str__()方法30
2.1.1非集合对象的__str__()和__repr__()31
2.1.2集合中的__str__()和__repr__()32
2.2__format__()方法33
2.2.1内嵌格式规范34
2.2.2集合和委托格式规范35
2.3__hash__()方法35
2.3.1决定哈希的对象36
2.3.2有关不可变对象和继承的默认行为37
2.3.3重载不可变对象39
2.3.4重载可变对象40
2.3.5从可变的Hand类中生成一个不可变的Hand类41
2.4__bool__()方法43
2.5__bytes__()方法44
2.6比较运算符方法45
2.6.1设计比较运算47
2.6.2实现同一个类的对象比较48
2.6.3实现不同类的对象比较49
2.6.4硬总和、软总和及多态50
2.6.5不同类比较的例子51
2.7__del__()方法53
2.7.1引用计数和对象销毁54
2.7.2循环引用和垃圾回收55
2.7.3循环引用和weakref模块56
2.7.4__del__()和close()方法58
2.8__new__()方法和不可变对象58
2.9__new__()方法和元类型59
2.9.1元类型示例1——有序的属性60
2.9.2元类型示例2——自引用61
2.10总结64
第3章属性访问、特性和修饰符66
3.1属性的基本操作66
3.2创建特性68
3.2.1主动计算特性70
3.2.2setter和deleter特性71
3.3使用特殊方法完成属性访问72
3.3.1使用__slots__创建不可变对象73
3.3.2使用tuple子类创建不可变对象74
3.3.3主动计算的属性75
3.4__getattribute__()方法77
3.5创建修饰符78
3.5.1使用非数据修饰符80
3.5.2使用数据修饰符81
3.6总结、设计要素和折中方案83
3.6.1特性与属性对比83
3.6.2修饰符的设计84
3.6.3展望84
第4章抽象基类设计的一致性85
4.1抽象基类85
4.2基类和多态87
4.3可调用对象88
4.4容器和集合88
4.5数值类型89
4.6其他的一些抽象基类90
4.6.1迭代器的抽象基类90
4.6.2上下文和上下文管理器91
4.7abc模块92
4.8总结、设计要素和折中方案93
第5章可调用对象和上下文的使用95
5.1使用ABC可调用对象来进行设计95
5.2提高性能97
5.3使用functools完成记忆化99
5.4可调用API和复杂性100
5.5管理上下文和with语句102
5.5.1使用小数上下文103
5.5.2其他上下文104
5.6定义__enter__()和__exit__()方法104
5.7上下文管理器工厂105
5.8总结107
5.8.1可调用对象的设计要素和折中方案108
5.8.2上下文管理器的设计要素和折中方案108
5.8.3展望109
第6章创建容器和集合110
6.1集合的抽象基类110
6.2特殊方法示例111
6.3使用标准库的扩展112
6.3.1namedtuple()函数112
6.3.2deque类114
6.3.3使用ChainMap115
6.3.4OrderedDict集合116
6.3.5defaultdict子类118
6.3.6counter集合119
6.4创建新集合120
6.5定义一种新的序列121
6.5.1一个用于统计的list122
6.5.2主动计算和延迟计算122
6.5.3使用__getitem__()、__setitem__()、__delitem__()和slice操作125
6.5.4实现__getitem__()、__setitem__()和__delitem__()126
6.5.5封装list和委托127
6.5.6用__iter__()创建迭代器129
6.6创建一种新的映射129
6.7创建一种新的集合131
6.7.1一些设计原则132
6.7.2定义Tree类132
6.7.3定义TreeNode类133
6.7.4演示二叉树集合136
6.8总结136
6.8.1设计要素和折中方案137
6.8.2展望138
第7章创建数值类型139
7.1numbers的抽象基类139
7.1.1决定使用哪种类型141
7.1.2方法解析和运算符映射141
7.2算术运算符的特殊方法142
7.3创建一个数字类144
7.3.1FixedPoint的初始化144
7.3.2定义固定小数点位数的二进制算术运算符146
7.3.3定义FixedPoint一元算术运算符148
7.3.4实现FixedPoint反向运算符148
7.3.5实现FixedPoint比较运算符150
7.4计算一个数字的哈希值152
7.5实现其他的特殊方法153
7.6原地运算符的优化154
7.7总结155
7.7.1设计要素和折中方案155
7.7.2展望155
……
第8章装饰器和mixin——横切方面156
第2部分持久化和序列化175
第9章序列化和保存——JSON、YAML、Pickle、CSV和XML178
第10章用Shelve保存和获取对象214
第11章用SQLite保存和获取对象235
第12章传输和共享对象263
第13章配置文件和持久化
第3部分测试、调试、部署和维护
第14章Logging和Warning模块
第15章可测试性的设计
第16章使用命令行
第17章模块和包的设计
第18章质量和文档