第17章 模块和包的设计

Python为我们提供了一些高层面上的结构来组织软件。在第1部分“用特殊方法实现Python风格的类”中,我们介绍了一些如何使用类定义正确地将结构和行为进行绑定的技巧。在本章中,将介绍如何使用模块对类、函数和全局对象进行封装。关于模块的组织,会使用包作为一种设计方案来对相关模块进行组织。

Python中,创建简单的模块很容易。任何时候,我们在创建一个Python文件的同时就创建了一个模块。随着设计范围的扩大以及复杂度的增加,需要使用包对模块进行组织,从而使维护更清晰,这点很重要。

我们也会有一些特殊模块。对于大的应用来说,我们会实现一个__main__模块。这个模块用于给应用提供OS命令行接口。它的设计不能阻碍应用中简单的重用,这样才能创建更大、更复杂的应用。

在选择如何安装模块上也有一些灵活性。可以使用默认的安装目录、环境变量的设置、.pth文件以及Pythonlib/site-packages目录,它们都各有优缺点。

在分发Python代码时,我们要避免复杂的问题。有很多技术可以用于创建一个Python项目的源代码分支。有些不适用于面向对象设计。在Python标准库的第30章中,解决了一些物理文件包的问题,在分发Python模块的文档中,在创建代码分支上提供了一些信息。

模块是Python中实现和重用的单元。所有的Python编程都是在模块层面提供的。类是面向对象设计和编程的基础。模块——类的集合——是在Python中更高层面上的可重用单元。

一个Python模块是一个文件,文件扩展名必须为.py。在.py之前的文件名必须为一个有效的Python名。在Python语言参考的第2.3节中,为我们提供了命名的完整定义。其中的一点是:在ASCII范围(U+0001..U+007F)内,标识符的有效字符与Python ...

Get Python面向对象编程指南 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.