12.3 对象和可变长度对象类型
C 语言不是像 Python 这样的面向对象语言,C 语言中的对象不会继承其他对象。PyObject
是每个 Python 对象的初始数据段,PyObject *
表示指向 Python 对象的指针。
当定义 Python 类型时,typedef
使用如下两个宏中的一个:
PyObject_HEAD (PyObject)
用于简单的类型PyObject_VAR_HEAD (PyVarObject)
用于容器类型。
PyObject
比较简单,它有如下字段:
字段 | 类型 | 用途 |
---|---|---|
|
| 实例的引用计数器 |
|
| 对象的类型 |
例如,cellobject
除了基础字段外,声明了一个额外的字段 ob_ref
:
可变长度类型 PyVarObject
扩展了 PyObject
类型,有如下字段:
字段 | 类型 | 用途 |
---|---|---|
|
| 基类型 |
|
| 包含的项目数量 |
例如,int
类型(PyLongObject
),定义如下:
Last updated