元组对象 – 具体对象层(Python教程)(参考资料)
元组对象
- PyTypeObject
PyTuple_Type PyTypeObject的这个实例表示Python元组类型;它与Python层中tuple的对象相同.
- int
PyTuple_CheckExact( PyObject *p) - 如果p是元组对象,则返回true,但不是元组类型子类的实例.
- PyObject*
PyTuple_Pack( Py_ssize_t n, …) - Return value: New reference.
在失败时返回一个大小为n或NULL的新元组对象。元组值初始化为随后的n C参数指向Python对象.
PyTuple_Pack(2, a, b)相当于Py_BuildValue("(OO)", a, b).
- Py_ssize_t
PyTuple_GET_SIZE( PyObject *p) - 返回元组p的大小,它必须是非NULL并指向一个元组;不执行错误检查.
- PyObject*
PyTuple_GET_ITEM(PyObject *p,Py_ssize_t pos) - Return value: Borrowed reference.
喜欢
PyTuple_GetItem(),但没有查看它的论点.
- PyObject*
PyTuple_GetSlice( PyObject *p,Py_ssize_t low,Py_ssize_t high) - Return value: New reference.
从p中取出low到high并将它作为一个新的元组返回
- int
PyTuple_SetItem( PyObject *p,Py_ssize_t pos,PyObject *o) - 在o指向的元组位置pos插入对象p。返回
0成功.注意
这个功能“偷”了o.
- 无效
PyTuple_SET_ITEM(的PyObject *p,Py_ssize_t pos,PyObject *o) - 喜欢
PyTuple_SetItem(),但没有错误检查,应该only用来填补全新的元组.注意
这个功能“偷”了o.
- int
_PyTuple_Resize(的PyObject **p,Py_ssize_t newsize) - 可用于调整元组的大小。newsize将是元组的新长度。因为元组supposed是不可变的,所以只有在对象只有一个引用的情况下才能使用它。做not如果元组的某些其他部分已经知道元组,则使用此方法。元组总是会增长或缩小。可以把它想象成摧毁旧元组并创建一个新元组,只是更有效率。返回
0成功。客户端代码应该假设*p的结果值与调用此函数之前的值相同。如果*p引用的对象被替换,原来的*p被毁了。失败时,返回-1并将*p设置为NULL,并选择MemoryError或SystemError.
- int
PyTuple_ClearFreeList() - 清除免费清单。返回已释放物品的总数.
结构序列对象
结构序列对象是等效的namedtuple()对象,即也可以通过属性访问其项目的序列。要创建结构序列,首先必须创建一个特定的struct sequencetype.
- PyTypeObject*
PyStructSequence_NewType(PyStructSequence_Desc *desc) - Return value: New reference.
从desc中的数据创建一个新的结构序列类型,如下所述。可以用
PyStructSequence_New().
- void
PyStructSequence_InitType( PyTypeObject *type,PyStructSequence_Desc *desc) - 从type到位初始化结构序列类型desc
- void
PyStructSequence_InitType2( PyTypeObject *type,PyStructSequence_Desc *desc) - 和
PyStructSequence_InitType,但在成功时返回0和-1onfailure.新版本3.4.
PyStructSequence_Desc- 包含结构序列类型的元信息来创建.
Field C类型 含义 nameconst char *结构序列类型的名称 docconst char *指向docstring的指针,类型为NULL,省略 fieldsPyStructSequence_Field *指向NULL-terminated arraywith新类型的字段名 n_in_sequenceint对于Python端可见的字段数(如果用作元组)
PyStructSequence_Field- 描述结构序列的字段。由于结构序列被建模为atuple,所有字段都被键入为
PyObject*。fieldsPyStructSequence_Desc数组中的索引决定了结构序列的哪个字段描述.字段 C类型 含义 nameconst char *字段名称或NULL结束命名字段列表,设置为@PyStructSequence_UnnamedField toleave unnamed docconst char *字段docstring或NULL忽略
- char *
PyStructSequence_UnnamedField - 字段名称的特殊值,使其无法命名.
- PyObject*
PyStructSequence_New( PyTypeObject *type) - Return value: New reference.
创建一个type的实例,它必须是用
PyStructSequence_NewType().
- PyObject *
PyStructSequence_GetItem创建的( PyObject *p,Py_ssize_t pos) - Return value: Borrowed reference.
在pos指向的结构序列中返回p位置的对象。不进行边界检查.
- PyObject *
PyStructSequence_GET_ITEM( PyObject *p,Py_ssize_t pos) - Return value: Borrowed reference.
宏相当于
PyStructSequence_GetItem().
- void
PyStructSequence_SetItem的指针( PyObject *p,Py_ssize_t pos,PyObject *o) - 设置索引pos结构序列p重视o。喜欢
PyTuple_SET_ITEM(),这应该只用于填补品牌新实例.注意
这个功能“偷”了o.
- void
PyStructSequence_SET_ITEM(的PyObject *p,Py_ssize_t *pos,PyObject *o) - 宏相当于
PyStructSequence_SetItem().注意
这个功能“偷”了o.
评论被关闭。