第 11 章 对象 对象
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
对象并不神秘。神秘的是你的眼睛。
伊丽莎白-鲍文
选择一个对象。对它做一些事情。对它做些别的事情。
贾斯珀-约翰斯
正如我在不同的页面中提到的,Python 中的一切,从数字到函数,都是对象。然而,Python 通过特殊的语法隐藏了大部分对象机制。您可以键入num = 7来创建一个值为 7 的整数类型的对象,并将对象引用赋值给num 。唯一需要查看对象内部的时候是当您想创建自己的对象或修改现有对象的行为时。 您将在本章中看到如何实现这两种操作。
什么是对象?
对象是 一种包含数据(变量,称为属性)和代码(函数,称为方法)的数据结构。对象代表一个具体事物的唯一实例。 将对象视为名词,将其方法视为动词。对象代表一个单独的事物,其方法定义了它与其他事物交互的方式。
例如,值为7 的整数对象是一个便于使用加法和乘法等方法的对象,这在第 3 章中已经看到了。但8 是一个不同的对象。这意味着在 Python 的某个地方内置了一个整数类,7 和8 都属于这个整数类。字符串cat 和duck 也是 Python 中的对象,并且有字符串方法,这在第 4 章中已经看到了,如capitalize() 和replace() 。
与模块(将在第 12 章中介绍)不同的是,您可以同时拥有多个同类对象(通常称为实例),每个对象都有可能具有不同的属性。 它们就像超级数据结构,只是在其中加入了代码。
简单对象
让我们从基本对象类开始;关于继承的讨论将留到后面几页进行。
用类定义一个类
要创建一个从未有人创建过的新对象, 首先要定义一个类,指明该对象包含的内容。
在第 2 章中,我把对象比作一个塑料盒。类就像制造这个塑料盒的模具。 例如,Python 有一个内置类,可以制造字符串对象,如cat 和duck ,以及其它标准数据类型--列表、字典等。要在 Python 中创建自己的自定义对象,首先需要使用class 关键字定义一个类。让我们举几个简单的例子。
假设您想定义一个对象来表示有关猫的信息。1
每个对象将代表一只猫科动物。首先,您需要定义一个名为Cat 的类作为模子。在接下来的示例中,我们将尝试多个版本的类,从最简单的类到能做一些有用事情的类。
注意
我们遵循 PythonPEP-8 的命名约定。
我们第一次尝试的是最简单的类,一个空类:
>>>classCat():...pass
你也可以不加括号来定义这个类:
>>>classCat:...pass
与函数一样,我们需要使用pass 来表示这个类是空的。这个定义是创建对象的最基本条件。
从类中创建对象的方法是调用类名,就像调用函数一样:
>>>a_cat=Cat()>>>another_cat=Cat()
在本例中,调用Cat() 可以从Cat 类中创建两个单独的对象,我们将它们分别赋值给a_cat 和another_cat 。但是Cat 类没有其他代码,因此我们创建的对象只能呆在那里,不能做其他任何事情。
好吧,它们可以做一点事情。
分配属性
属性是 类或对象中的一个变量 。在创建对象或类时以及创建后,都可以为其分配属性。 属性可以是任何其他对象。让我们再创建两个猫对象:
>>>classCat:...pass...>>>a_cat=Cat()>>>a_cat<__main__.Cat object at ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access