十二、对象和类型
CPython 自带了一系列基本类型,例如字符串、列表、元组、字典和对象。
所有这些类型都是内置的。你不需要导入任何库,甚至不需要从标准库中导入。
例如,要创建一个新的列表,你可以调用:
或者,你可以使用方括号:
字符串可以使用双引号或单引号从一个字符串字面量(string literal)实例化。在 “Python 语言和语法” 章节中,你探索了一些语法定义,它们让编译器把双引号解释为一个字符串字面量。
Python 中的所有类型都继承自一个内置的基类型 object
。即便是字符串、元组和列表也都继承自 object
。
object
类型的基本实现在 Object/object.c
中,它是用纯 C 实现的。还有一些基本逻辑的具体实现,比如浅层比较(shallow comparisons)。
你可以将 Python 对象视为由两个部分组成:
核心数据模型,包括指向已编译函数的指针
一个带有任意自定义属性和方法的字典
许多基本的对象 API 在 Objects/object.c
中声明,比如内置函数 repr()
的实现,PyObject_Repr
。在文件中你还可以找到 PyObject_Hash()
和其他 API。
通过在 Python 对象上实现 双下划线(dunder methods)方法,所有这类函数都可以在自定义对象中被重写:
所有的这些内置函数被称之为 Python 数据模型。并不是说一个 Python 对象中的所有方法都是数据模型的一部分,这种数据模型使得 Python 对象可以包含类或实例属性以及方法。
参见
Luciano Ramalho 的《Fluent Python, 2nd Edition》是了解 Python 数据模型的极佳资源。
Last updated