元组对象 – 具体对象层(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
和-1
onfailure.新版本3.4.
PyStructSequence_Desc
- 包含结构序列类型的元信息来创建.
Field C类型 含义 name
const char *
结构序列类型的名称 doc
const char *
指向docstring的指针,类型为NULL,省略 fields
PyStructSequence_Field *
指向NULL-terminated arraywith新类型的字段名 n_in_sequence
int
对于Python端可见的字段数(如果用作元组)
PyStructSequence_Field
- 描述结构序列的字段。由于结构序列被建模为atuple,所有字段都被键入为
PyObject*
。fields
PyStructSequence_Desc
数组中的索引决定了结构序列的哪个字段描述.字段 C类型 含义 name
const char *
字段名称或NULL结束命名字段列表,设置为@PyStructSequence_UnnamedField toleave unnamed doc
const 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.
评论被关闭。