本文共 1706 字,大约阅读时间需要 5 分钟。
本书主要介绍Python语言的高级特性,特别是如何编写高质量的Python程序。这通常意味着编写高性能且拥有良好可维护性的程序。同时,我们也会探究不同的设计方案并确定究竟是哪种方案提供了最佳性能。而对于一些正在寻找解决方案的问题,这也是一种很好的方式。
本书的大部分内容将介绍一种给定设计的不同替代方案。一些方案性能更好,另一些方案更加简单或者更加适合于特定领域的问题。最重要的是,找到最好的算法和最优的数据结构,以最少的开销换取最大的价值。时间就是金钱,高效的程序会为它们的用户创造更多的价值。
Python的很多内部特性都可以直接被应用程序所使用。这意味着,我们的程序可以与Python现有的特性非常好地整合。充分利用这些Python特性,可以让我们的面向对象设计整合得很好。
我们经常会为一个问题寻找多种不同的解决方案。当你评估不同的算法和数据结构时,通常会设计几种不同的方案,它们在性能和内存的使用上不尽相同。通过评估不同的方案,最终合理地优化应用程序,这是一种重要的面向对象设计技巧。
本书一个更为重要的主题是,对于任何问题,没有所谓的唯一且最好的方法。相反,会有许多不同的方案,而这些方案也各有优劣。
关于编程风格的主题非常有趣。敏锐的读者会注意到,在一些非常细微的部分,例如在名称选择和符号的使用上,并非所有的例子都完全符合PEP-8。
随着你能够越来越熟练地以面向对象的方式使用Python,也将不得不花大量的时间去阅读各种Python源码。你会发现,甚至在Python标准库的模块中,都有很大的可变性。相比于展示完全一致的例子,我们更倾向于去关注那些不一致的部分,正如我们在各种开源项目中所看到的,一致性的缺乏,正是对代码更好的认可。
[第1部分 用特殊方法实现Python风格的类
第1章 __init__()方法1.1 隐式的基类——object](1.5.1 错误的工厂设计和模糊的else语句1.5.2 使用elif简化设计来获得一致性1.5.3 使用映射和类来简化设计1.7.1 封装集合类1.7.2 扩展集合类1.7.3 可适应更多需求的另一种设计1.11.1 更复杂的初始化方式1.11.2 静态函数的初始化1.12.1 带有类型验证的初始化1.12.2 初始化、封装和私有化[第2章 与Python无缝集成——基本特殊方法2.1 __repr__()和__str__()方法](2.1.1 非集合对象的__str__()和__repr__()2.1.2 集合中的__str__()和__repr__()2.2.1 内嵌格式规范2.2.2 集合和委托格式规范2.3.1 决定哈希的对象2.3.2 有关不可变对象和继承的默认行为2.3.3 重载不可变对象2.3.4 重载可变对象2.3.5 从可变的Hand类中生成一个不可变的Hand类2.6.1 设计比较运算2.6.2 实现同一个类的对象比较2.6.3 实现不同类的对象比较2.6.4 硬总和、软总和和多态2.6.5 不同类比较的例子2.7.1 引用计数和对象销毁2.7.2 循环引用和垃圾回收2.7.3 循环引用和weakref模块2.7.4 __del__()和close()方法2.9.1 元类型示例1——有序的属性2.9.2 元类型示例2——自引用第3章 属性访问、特性和修饰符第4章 抽象基类设计的一致性第5章 可调用对象和上下文的使用第6章 创建容器和集合第7章 创建数值类型第8章 装饰器和mixin——横切方面第2部分 持久化和序列化第9章 序列化和保存——JSON、YAML、Pickle、CSV和XML第10章 用Shelve保存和获取对象第11章 用SQLite保存和获取对象第12章 传输和共享对象第13章 配置文件和持久化第3部分 测试、调试、部署和维护第14章 Logging和Warning模块第15章 可测试性的设计第16章 使用命令行第17章 模块和包的设计第18章 质量和文档转载地址:http://orjka.baihongyu.com/