上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.2 面向对象编程
在上一节中,我们讨论了函数式编程和相应的编程模式。现在我们将学习另一个范式:面向对象范式(object-oriented paradigm)。函数式编程对应函数,面向对象编程则对应对象。那么,第一个问题:什么是对象?
对象的定义有好几种。相比于其在面向对象编程理论中的标准学术定义,我想试着给出一个非常规的解释。
从实践的角度来看,我们可以将对象看作是特定领域的专家。我们提出问题,他们提供答案;或者我们可以请求他们做一些事情,他们也会去做。我们的问题或请求可能需要复杂的操作,但专家会隐藏其复杂性,这样我们就不需要担心细节——只关心工作是否完成。
以牙医为例。当你去看牙医的时候,你不需要对牙科有多了解,只需要依靠牙医的专业知识来修复蛀牙。你也可以问一些你的牙齿相关的问题,牙医会用一种你能理解的方式来回答,隐藏这个话题实际的复杂性。在上述例子中,牙医就是一个对象——可以完成牙科相关任务或咨询的对象。
对对象做出请求,需要调用对象的方法(method)。方法是属于对象的函数,可以访问对象的内部数据。对象本身有一些数据,通常对外部不可见,有时候对象会以特性(property)的形式公开这些数据。
注意:方法是属于类的函数,它是类的定义的一部分。需要在定义它的类的实例上被调用(执行)。相比之下,函数不属于任何类,它可以独立运行。
在Python当中,对象中的任何函数或变量都被称为属性(attribute)。特性和方法都是属性。我们将在本章和本书的其余部分中使用这些等价的术语。
现在让我们动起手来,看看如何在Python中定义和处理对象。