LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 269|回复: 0

结构序列对象

[复制链接]
发表于 2024-2-2 01:09:56 | 显示全部楼层 |阅读模式


结构序列对象是等价于 namedtuple() 的 C 对象,即一个序列,其中的条目也可以通过属性访问。 要创建结构序列,你首先必须创建特定的结构序列类型。

PyTypeObject *PyStructSequence_NewType(PyStructSequence_Desc *desc)
返回值:新的引用。 属于 稳定 ABI.
根据 desc 中的数据创建一个新的结构序列类型,如下所述。 可以使用 PyStructSequence_New() 创建结果类型的实例。

void PyStructSequence_InitType(PyTypeObject *type, PyStructSequence_Desc *desc)
从 desc 就地初始化结构序列类型 type。

int PyStructSequence_InitType2(PyTypeObject *type, PyStructSequence_Desc *desc)
与 PyStructSequence_InitType 相同,但成功时返回 0 ,失败时返回 -1 。

在 3.4 版本加入.

type PyStructSequence_Desc
属于 稳定 ABI (包括所有成员).
包含要创建的结构序列类型的元信息。

const char *name
结构序列类型的名称。

const char *doc
指向类型的文档字符串的指针或以 NULL 表示忽略。

PyStructSequence_Field *fields
指向以 NULL 结尾的数组的指针,该数组包含新类型的字段名。

int n_in_sequence
Python 端可见的字段数(如果用作元组)。

type PyStructSequence_Field
属于 稳定 ABI (包括所有成员).
描述结构序列的一个字段。 由于结构序列是以元组为模型的,因此所有字段的类型都是 PyObject*。 PyStructSequence_Desc 的 fields 数组中的索引决定了描述结构序列的是哪个字段。

const char *name
字段的名称或 NULL 表示结束已命名字段列表,设为 PyStructSequence_UnnamedField 则保持未命名状态。

const char *doc
字段文档字符串或 NULL 表示省略。

const char *const PyStructSequence_UnnamedField
属于 稳定 ABI 自 3.11 版开始.
字段名的特殊值将保持未命名状态。

在 3.9 版本发生变更: 这个类型已从 char * 更改。

PyObject *PyStructSequence_New(PyTypeObject *type)
返回值:新的引用。 属于 稳定 ABI.
创建 type 的实例,该实例必须使用 PyStructSequence_NewType() 创建。

PyObject *PyStructSequence_GetItem(PyObject *p, Py_ssize_t pos)
返回值:借入的引用。 属于 稳定 ABI.
返回 p 所指向的结构序列中,位于 pos 处的对象。不需要进行边界检查。

PyObject *PyStructSequence_GET_ITEM(PyObject *p, Py_ssize_t pos)
返回值:借入的引用。
PyStructSequence_GetItem() 的宏版本。

void PyStructSequence_SetItem(PyObject *p, Py_ssize_t pos, PyObject *o)
属于 稳定 ABI.
将结构序列 p 的索引 pos 处的字段设置为值 o。 与 PyTuple_SET_ITEM() 一样,它应该只用于填充全新的实例。

备注 这个函数“窃取”了指向 o 的一个引用。
void PyStructSequence_SET_ITEM(PyObject *p, Py_ssize_t *pos, PyObject *o)
类似于 PyStructSequence_SetItem(),但是被实现为一个静态内联函数。

备注 这个函数“窃取”了指向 o 的一个引用。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表