天天看点

《易学Python》——第6章 类与面向对象编程 6.1 类是什么

本节书摘来自异步社区《易学python》一书中的第6章,第6.1节,作者[澳]anthony briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

本章介绍如下内容:

一种看待类的更简单方式;

如何使用类来设计程序。

在本书前面,始终未涉及python中组织程序的基本方式之一:类。类和面向对象编程通常被认为是一个庞大而吓人的主题,仅供真正的程序员用来编写程序,因此您可能认为,要正确地使用它们,需要大量的理论知识。没有比这种看法更离谱的了。在python中,使用类和面向编程易如反掌。

在本章中,您将首先复习第2章为游戏hunt the wumpus编写的洞穴生成代码,并了解到使用类编写这些代码容易得多;然后,您将以此为基础,参照adventure和zork编写一个功能齐备的冒险游戏。在此期间,您将全面学习python类以及如何充分利用它们。

易学python

如果您回顾第2章,可能还记得您编写了一系列函数,用于处理玩家进入和wumpus所处的洞穴。有创建洞穴的函数,有使用通道将洞穴连通的函数,有确保所有洞穴都连在一起的函数,不一而足。在第2章编写程序时,您完全依靠函数来处理洞穴;另一种方式是创建一个类来标识这些函数,并将它们之间的关系固定下来。

看待类的另一种方式是,将其视为容器或包装器,包含要在程序中使用的数据。您可将执行特定任务所需的数据都封装起来,并提供处理它们的函数。在数据特别复杂、难以处理或需要保持一致(如跟踪银行账户余额的程序)时,尤其适合这样做。

类类似于抽象数据类型,包含一组数据以及可对这些数据执行的所有操作。您无需在类中指定可对数据执行的各种可能操作,而只根据具体情况指定有用的操作。然而,设计类时,考虑其各种可能用途并包含合理的操作常常大有裨益。

可将类视为橡皮图章,图章刻好后,就可用它轻松地盖章,想盖多少次都行。类的工作原理与此类似。您通常不直接使用类,而使用其实例——使用类创建的对象。

类的一个优点是,如果需要稍微不同的图案,只需复制原来的类,再稍作修改。图6.1以橡皮图章的方式展示了本章将用到的类。

《易学Python》——第6章 类与面向对象编程 6.1 类是什么

实例和类本身都可以有方法和数据供您调用和访问。在很大程度上说,这些都将在您创建实例时设置,但python允许您动态地更新它们,甚至重新绑定方法。

程序清单6.1是一个类,您应感到眼熟,虽然有些部分与以前截然不同。这是您在第2章编写的洞穴列表和方法,但将它们封装在类中了。

程序清单6.1 用于存储洞穴的对象

《易学Python》——第6章 类与面向对象编程 6.1 类是什么
《易学Python》——第6章 类与面向对象编程 6.1 类是什么
《易学Python》——第6章 类与面向对象编程 6.1 类是什么

将所有函数都放在类中有什么好处呢?主要好处是所有有关洞穴的细节都包含在您创建的实例中。这样,您可以同时创建其他洞穴系统,而不用担心它们相互冲突。您还可以扩展这个类(包含洞穴名和其他函数)或添加扩展洞穴系统的方法。

然而,这个caves类存在一个问题。虽然您创建了类且其效果不错,但这依然不是面向对象设计,您只是将既有功能放到了类中。如果以后要添加额外功能,如在洞穴中捡宝、更多怪物等,将很难。在第2章,添加函数改变了程序的设计,同样,为妥善地使用类,必须调整设计重点。