一些预备知识

    为了使本书接下来的内容更清晰,我们先来看一些关心的问题。其中一项是21点游戏。我们将重点关注21点游戏的模拟,但并不赞成赌博。

    然而,对于面向对象编程来说,模拟是最早的问题之一。这也是能够体现出面向对象编程优雅的一个情形。有关更多信息,可参见http://en.wikipedia.org/wiki/Simula,以及Rob Pooley写的An Introduction to Programming。

    本章会介绍一些工具的背景,它们是编写出完整的Python程序和包的基础。在接下来的章中会使用它们。

    我们会使用timeit模块将面向对象设计进行对比,找出性能更好的那个。在很多有关如何更好地写出适用于问题模型代码的主观考虑中,使用客观事实来进行说明是非常重要的。

    我们将介绍如何在面向对象中使用unittestdoctest模块,它们是在开发过程中核对实际工作的基本工具。

    一个良好的面向对象设计应当是清晰的并且可读性很强。为了确保良好的可读性,编写Python风格的文档是必要的。Docstrings在模块、类和方法中都很重要。我们会在这里简单概括RST标记并会在第18章“质量和文档”中详细介绍。

    此外,我们还要解决集成开发环境(Integrated Development Environment,IDE)的问题。常见的问题是Python开发最好的IDE。

    最后,我们会介绍Python中特殊基本方法的概念。关于特殊方法,在前7章都有介绍。在这里,我们会介绍一些有助于理解第1部分“用特殊方法实现Python风格的类”的背景知识。

    在讨论Python面向对象编程过程中,将尽量避免一些题外话。我们会假设你已经读了Python 3 Object Oriented Programming这本书。我们不会重复在其他地方已经讲得很清楚的内容。在本书中,会完全关注Python 3的内容。

    我们会引用很多常见的面向对象设计模式,也不会重复在Learning Python Design Patterns书中出现的内容。