图书介绍
PYTHON面向对象编程指南2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- (美)STEVEN F.LOTT著;张心韬,兰亮译 著
- 出版社: 北京:人民邮电出版社
- ISBN:7115405586
- 出版时间:2016
- 标注页数:433页
- 文件大小:144MB
- 文件页数:468页
- 主题词:
PDF下载
下载说明
PYTHON面向对象编程指南PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第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___()和___st___()方法30
2.1.1 非集合对象的___str___()和___repr___()31
2.1.2 集合中的___st___()和___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.2 setter和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.7 abc模块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.1 namedtuple()函数112
6.3.2 deque类114
6.3.3 使用ChainMap115
6.3.4 OrderedDict集合116
6.3.5 defaultdict子类118
6.3.6 counter集合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.1 numbers的抽象基类139
7.1.1 决定使用哪种类型141
7.1.2 方法解析和运算符映射141
7.2 算术运算符的特殊方法142
7.3 创建一个数字类144
7.3.1 FixedPoint的初始化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
8.1 类和描述156
8.1.1 创建函数157
8.1.2 创建类158
8.1.3 一些类设计原则159
8.1.4 面向方面编程159
8.2 使用内置的装饰器160
8.3 使用标准库中的mixin类161
8.3.1 使用上下文管理器的mixin类162
8.3.2 禁用类的一个功能163
8.4 写一个简单的函数装饰器164
8.5 带参数的装饰器166
8.6 创建方法函数装饰器167
8.7 创建类装饰器169
8.8 向类中添加方法函数170
8.9 将装饰器用于安全性172
8.10 总结173
8.10.1 设计要素和折中方案173
8.10.2 展望174
第2部分 持久化和序列化175
第9章 序列化和保存——JSON、YAML、Pickle、CSV和XML178
9.1 持久化、类、状态以及数据表示179
9.2 文件系统和网络的考虑180
9.3 定义用于持久化的类181
9.4 使用JSON进行转储和加载184
9.4.1 在类中支持JSON185
9.4.2 自定义JSON编码186
9.4.3 自定义JSON解码188
9.4.4 安全性和eval()189
9.4.5 重构编码函数189
9.4.6 日期字符串的标准化190
9.4.7 将JSON写入文件191
9.5 使用YAML进行转储和加载192
9.5.1 YAML文件的格式化193
9.5.2 扩展YAML的表示194
9.5.3 安全性与安全加载196
9.6 使用pickle进行转储和加载196
9.6.1 针对可靠的pickle处理进行类设计197
9.6.2 安全性和全局性问题199
9.7 转储和加载CSV200
9.7.1 将简单的序列转储为CSV200
9.7.2 从CSV文件中加载简单的序列201
9.7.3 处理集合与复杂的类202
9.7.4 在一个CSV文件中转储并从多类型的行中加载数据203
9.7.5 使用迭代器筛选CSV中的行204
9.7.6 从CSV文件中转储和加载连接的行205
9.8 使用XML转储和加载207
9.8.1 使用字符串模板转储对象208
9.8.2 使用xml.etree.ElementTree转储对象209
9.8.3 加载XML文档210
9.9 总结211
9.9.1 设计要素和折中方案211
9.9.2 模式演化212
9.9.3 展望213
第10章 用Shelve保存和获取对象214
10.1 分析持久化对象用例215
10.2 创建shelf216
10.3 设计适于存储的对象217
10.3.1 为我们的对象设计键217
10.3.2 为对象生成代理键218
10.3.3 设计一个带有简单键的类218
10.3.4 为容器和集合设计类220
10.3.5 用外键引用对象220
10.3.6 为复杂对象设计CRUD操作222
10.4 搜索、扫描和查询223
10.5 为shelve设计数据访问层224
10.6 用索引提高性能227
10.7 有关更多的索引维护工作230
10.8 用writeback代替更新索引232
10.9 总结233
10.9.1 设计要素和折中方案233
10.9.2 应用软件层234
10.9.3 展望234
第11章 用SQLite保存和获取对象235
11.1 SQL数据库、持久化和对象235
11.1.1 SQL数据模型——行和表236
11.1.2 使用SQL的DML语句完成CRUD238
11.1.3 使用SQL中SELECT语句执行查询240
11.1.4 SQL事务和ACID属性240
11.1.5 设计数据库中的主键和外键242
11.2 使用SQL处理程序中的数据243
11.3 从Python对象到SQLite BLOB列的映射245
11.4 手动完成从Python对象到数据库中行的映射247
11.4.1 为SQLite设计一个访问层248
11.4.2 实现容器的关系251
11.5 使用索引提高性能252
11.6 添加ORM层252
11.6.1 设计ORM友好的类253
11.6.2 使用ORM层创建模型255
11.6.3 使用ORM层操作对象256
11.7 通过指定标签字符串查询文章对象258
11.8 通过创建索引提高性能259
11.9 总结261
11.9.1 设计要素和折中方案261
11.9.2 映射的方法261
11.9.3 键和键的设计262
11.9.4 应用软件层262
11.9.5 展望262
第12章 传输和共享对象263
12.1 类、状态和表示263
12.2 用HTTP和REST传输对象264
12.2.1 用REST实现CRUD操作264
12.2.2 实现非CRUD操作265
12.2.3 REST协议和ACID266
12.2.4 选择一种表示方法——JSON、XML或者YAML266
12.3 实现一个REST服务器——WSGI和mod wsgi267
12.3.1 创建简单的REST应用程序和服务器267
12.3.2 实现REST客户端270
12.3.3 演示RESTful服务并创建单元测试271
12.4 使用可回调类创建WSGI应用程序272
12.4.1 设计RESTful对象标识符274
12.4.2 多层REST服务275
12.4.3 创建roulette服务器279
12.4.4 创建roulette客户端280
12.5 创建安全的REST服务281
12.6 用Web应用程序框架实现REST284
12.7 用消息队列传输对象285
12.7.1 定义进程286
12.7.2 创建队列和提供数据287
12.8 总结289
12.8.1 设计要素和折中方案289
12.8.2 模式演变289
12.8.3 应用程序软件层次290
12.8.4 展望290
第13章 配置文件和持久化291
13.1 配置文件的使用场景291
13.2 表示、持久化、状态和可用性293
13.2.1 应用程序配置的设计模式293
13.2.2 使用对象的构造完成配置294
13.2.3 实现具有层次结构的配置295
13.3 使用INI文件保存配置296
13.4 使用eval()完成更多的文字处理299
13.5 使用PY文件存储配置299
13.5.1 使用类定义进行配置300
13.5.2 通过SimpleNamespace进行配置301
13.5.3 在配置中使用Python的exec()304
13.6 为什么执行exec()没有问题305
13.7 为默认值和重写使用链映射306
13.8 使用JSON或YAML文件存储配置307
13.8.1 使用压平的JSON配置309
13.8.2 加载YAML配置310
13.9 使用特性文件存储配置311
13.9.1 解析特性文件312
13.9.2 使用特性文件314
13.10 使用XML文件——PLIST以及其他格式保存配置315
13.11 总结318
13.11.1 设计要素和折中方案318
13.11.2 创建共享配置319
13.11.3 模式演化319
13.11.4 展望319
第3部分 测试、调试、部署和维护321
第14章 Logging和Warning模块324
14.1 创建基本日志324
14.1.1 创建共享的类级记录器325
14.1.2 配置日志记录器326
14.1.3 开始和关闭日志记录系统326
14.1.4 使用命名的日志记录器328
14.1.5 扩展日志等级329
14.1.6 定义指向多个目标输出的handler329
14.1.7 管理传播规则331
14.2 理解配置332
14.3 为控制、调试、审计和安全创建专门的日志332
14.3.1 创建调试日志334
14.3.2 创建审计和安全日志335
14.4 使用warnings模块337
14.4.1 用警告信息显示API变化337
14.4.2 用警告信息显示配置问题338
14.4.3 用警告信息显示可能存在的软件问题339
14.5 高级日志——最后一些信息和网络目标地址340
14.5.1 创建自动的tail缓冲区340
14.5.2 发送日志消息到远程的进程342
14.5.3 防止队列溢出345
14.6 总结346
14.6.1 设计要素和折中方案346
14.6.2 展望347
第15章 可测试性的设计348
15.1 为测试定义并隔离单元348
15.1.1 最小化依赖349
15.1.2 创建简单的单元测试351
15.1.3 创建一个测试组件352
15.1.4 包含边界值测试353
15.1.5 为测试模仿依赖354
15.1.6 为更多的行为使用更多的模仿对象357
15.2 使用doctest来定义测试用例357
15.2.1 将doctest与 unittest相结合360
15.2.2 创建一个更完整的测试包360
15.3 使用安装和卸载361
15.3.1 使用OS资源进行安装和卸载362
15.3.2 结合数据库进行安装和卸载363
15.4 TestCase的类层次结构366
15.5 使用外部定义的期望结果367
15.6 自动化集成和性能测试370
15.7 总结371
15.7.1 设计要素和折中方案372
15.7.2 展望372
第16章 使用命令行373
16.1 操作系统接口和命令行373
16.2 用argparse解析命令行375
16.2.1 简单的on/off选项376
16.2.2 带参数选项377
16.2.3 位置参数377
16.2.4 所有其他参数377
16.2.5 --version的显示和退出378
16.2.6 --help的显示和退出378
16.3 集成命令行选项和环境变量378
16.3.1 提供更多的可配置默认值379
16.3.2 用环境变量覆盖配置文件设置380
16.3.3 用配置文件覆盖环境变量381
16.3.4 让配置文件理解None381
16.4 自定义帮助文档的输出382
16.5 创建顶层main()函数383
16.5.1 确保配置遵循DRY原则385
16.5.2 管理嵌套的配置上下文385
16.6 大规模程序设计386
16.6.1 设计命令类386
16.6.2 添加用于分析的命令子类388
16.6.3 向应用程序中添加更多的功能389
16.6.4 设计更高级的复合命令389
16.7 其他的复合命令设计模式391
16.8 与其他应用程序集成392
16.9 总结392
16.9.1 设计要素和折中方案393
16.9.2 展望393
第17章 模块和包的设计394
17.1 设计一个模块394
17.1.1 一些模块设计的方法395
17.1.2 模块和类396
17.1.3 模块中应该包含的内容397
17.2 全局模块和模块项398
17.3 包的设计399
17.3.1 包与模块的混合设计400
17.3.2 使用多种实现进行包的设计401
17.4 主脚本和main模块的设计402
17.4.1 创建可执行脚本文件402
17.4.2 创建main模块403
17.4.3 大规模编程403
17.5 设计长时间运行的应用404
17.6 使用src、bin和test来组织代码406
17.7 安装Python模块407
17.8 总结408
17.8.1 设计要素和折中方案408
17.8.2 展望408
第18章 质量和文档409
18.1 为help()函数编写docstrings409
18.2 用pydoc编写文档410
18.3 通过RST标记提供更好的输出411
18.3.1 文本块412
18.3.2 RST内联标记413
18.3.3 RST指令414
18.3.4 学习RST415
18.4 编写有效的文档字符串415
18.5 编写文件级别的文档字符串——包括模块和包416
18.5.1 用RST标记编写详细的API文档417
18.5.2 编写类和方法函数的文档字符串419
18.5.3 编写函数文档字符串420
18.6 更复杂的标记技术420
18.7 用Sphinx生成文档421
18.7.1 使用Sphinx的快速启动421
18.7.2 编写Sphinx文档423
18.7.3 在文档中加入4+1视图424
18.7.4 编写实现文档425
18.7.5 用Sphinx创建交叉引用426
18.7.6 将Sphinx文件重构为目录427
18.8 编写文档427
18.9 大纲式编程428
18.9.1 大纲式编程用例428
18.9.2 使用大纲式编程工具429
18.10 总结432
热门推荐
- 2001930.html
- 3828663.html
- 4426.html
- 2626318.html
- 2764588.html
- 359955.html
- 1787347.html
- 523169.html
- 1348272.html
- 1091045.html
- http://www.ickdjs.cc/book_3822087.html
- http://www.ickdjs.cc/book_1427243.html
- http://www.ickdjs.cc/book_457934.html
- http://www.ickdjs.cc/book_861891.html
- http://www.ickdjs.cc/book_950188.html
- http://www.ickdjs.cc/book_3874013.html
- http://www.ickdjs.cc/book_3690873.html
- http://www.ickdjs.cc/book_2887335.html
- http://www.ickdjs.cc/book_3389975.html
- http://www.ickdjs.cc/book_3169804.html