写一些面向对象的代码。目标是使用本章学到的设计原则和语法。要确保你不只是读过,而且会用!如果你已经在做一些Python项目,返回去看一下你是否能创建一些对象并为它们添加一些属性或方法。如果项目太大,试着将其分成几个模块,甚至是包,然后使用这些语法。虽然把一个简单的脚本分解成模块和包以后似乎变得复杂了,但是它会带来灵活性和可扩展性。
如果你没有这样一个项目,试着开始一个新的项目。并不一定要完成整个项目,只需要用上一些基本的设计就可以。你不需要完全实现所有东西,仅一些print("this method will do something")就可以描述整体设计了。这被称为 自上而下的设计 ( top-down design ),在真正实现之前,先找出不同的交互并描述它们如何工作。与之对应的是 自下而上的设计 ( bottom-up design ),先实现细节部分,然后将它们整合到一起。两种模式在不同的情境下都很有用,但是对于理解面向对象的设计原则来说,自上而下的工作流程更合适。
如果你不知道要做什么项目,可以试着写一个任务清单应用。它可用于追踪你每天想要做的事,并可以标记已完成的事。你可能也需要Started等中间状态,表示任务已开始但尚未完成。
现在尝试设计一个更大的项目。创建一些类为玩扑克牌建模可能是一个有趣的挑战。扑克牌的卡片拥有一些功能,但规则有很多变化。随着卡片的添加,你手里的牌局类会发生有趣的状态变化。找到你喜欢的游戏并创建类来模拟卡片、牌局和游戏。(不要解决赢牌策略的问题,这可能很难。)
像“争上游”这样的纸牌游戏,如果有5张连续的单牌,就可以作为一套牌一次性打出去,这就是一个有趣的状态变化。确保使用包和模块的导入语法。为不同的模块添加一些函数并试着从其他模块和包中导入。使用相对导入和绝对导入,看一下它们的区别,然后试着想象会用到它们的场景。