且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《树莓派Python编程指南》——3.6 使用类来构建对象

更新时间:2022-06-21 03:58:03

本节书摘来自华章计算机《树莓派Python编程指南》一书中的第3章,第3.6节,作者:(美) Alex Bradbury Ben Everard更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.6 使用类来构建对象

类允许你将数据和函数组合起来构成一个对象。实际上,我们在前面章节中已经使用过它。回忆下这两行:


《树莓派Python编程指南》——3.6 使用类来构建对象https://yqfile.alicdn.com/cf3a137ccff8e48abc102f32e14f61d197d0c716.png
" >

当时我们只是快速跳过去,现在让我们来看看它是如何工作的。turtle.Turtle()返回一个由turtle模块中Turtle类创建的对象。同样的,tuttle.Screen()返回一个由turtle模块中Screen类创建的对象。简而言之,类是用来构建对象的蓝图。对象可以存储数据,并且提供可以让你操作数据的方法。而方法其实就是类中的函数。
你已经见识过对象是多么有用了。在第2章的例子中,你不用关心turtle的数据是如何存放的,因为它们已经包含在对象中了。你只需要将turtle对象保存在一个叫babbage的对象里,当调用某个方法时,该方法就知道如何存取它需要的各种东西。这样可以使程序整洁易用。例如下面的例子:

《树莓派Python编程指南》——3.6 使用类来构建对象https://yqfile.alicdn.com/ea45279ab371bc5f4df33ddd06e948805404a8ab.png
" >

这行代码将turtle向前移动并将结果画在屏幕上。在屏幕上画这条线,它知道用什么颜色的画笔,turtle的起始位置在哪里以及其他各种它所需要的信息,因为它们都已经存储在对象中了。
让我们用一个简单的例子看看对象里都有什么东西:

《树莓派Python编程指南》——3.6 使用类来构建对象

这里有几点需要注意,Python中,变量、函数和方法的名字通常用小写字母,类是个例外。因此Person类由大写字母P开头。如果不这样做Python也不会报错,但遵守惯例可以方便人们阅读对方的代码。可以看到,方法的定义方式和函数一样,区别只是参数总是以self开始,这表示本地变量。在这个例子中,本地变量包括self.age和self.name。它们会在类的每一个实例中都创建一份。本例中,我们用People类创建了两个对象(即类的实例),每个对象都有各自的一份self.age和self.person拷贝。我们可以在对象外面读写它们(就像我们在print方法中使用的那样)。这被称为Person类的属性。
这里还有两个方法。__init__是每个类都有的特殊方法。该方法在创建或“初始化”类的实例时会被调用。因此,ben = Person(31, “Ben”)会创建Person类的一个对象,并使用参数(31, “Ben”)调用__int__方法。通常可以用来设置属性。第二个方法birthday()展示了如何使用类方法而不用在类的外面关心数据的保存问题。给Person对象一个birthday()方法,拿来用就可以了,例如:

《树莓派Python编程指南》——3.6 使用类来构建对象

它将把age加一。
有时,我们不希望从头开始创建类,而是根据已经存在的类来建一个新的类。例如,如果你想创建一个类来保存parents(父母)的相关信息,它们也存在年龄(age),名字(name),和生日(birthday),如果再为Parent写一遍这些代码就会显得浪费。Python允许我们从其他类中继承。下面给出一个例子:

《树莓派Python编程指南》——3.6 使用类来构建对象

Person是Parent的超类,Parent是Person的子类。把类名放入要定义的类名后面的括号里,它就变成这个要定义的类的超类。你可以调用超类的__init__方法,会自动获得超类的属性和方法的访问权限而不用重写代码。
类的最大优势就是它可以方便重用代码。像我们在前几章中看到的那样,它可以方便地操纵turtle而不用关心它做了些什么,是怎么做的。因为turtle类封装了这些信息,你只要知道方法名字,就可以毫无障碍地使用它们了。贯穿本书,你将看到如何使用类提供的方法方便地构建复杂游戏,而不用担心这些方法的技术细节是如何实现的。
下面的代码使用类重写了学生数据库程序,感受下类是如何工作的(文件名chapter3-student-2.py)

《树莓派Python编程指南》——3.6 使用类来构建对象


《树莓派Python编程指南》——3.6 使用类来构建对象


《树莓派Python编程指南》——3.6 使用类来构建对象https://yqfile.alicdn.com/6008116c2455ba84e4dbc144b47fbb3e1aead45b.png" >