You are here:  Home » Python » 元组对象 – 具体对象层(Python教程)(参考资料)

元组对象

 

PyTupleObject
PyObject的子类型代表一个Python元组对象.
PyTypeObject PyTuple_Type
PyTypeObject的这个实例表示Python元组类型;它与Python层中tuple的对象相同.
int PyTuple_Check PyObject  *p
如果p是元组对象或tupletype的子类型实例,则返回true。
int PyTuple_CheckExact PyObject  *p
如果p是元组对象,则返回true,但不是元组类型子类的实例.
PyObject* PyTuple_New Py_ssize_t  len
Return value: New reference.

在失败时返回一个大小为lenNULL的新元组对象.

PyObject* PyTuple_Pack Py_ssize_t  n, …
Return value: New reference.

在失败时返回一个大小为nNULL的新元组对象。元组值初始化为随后的n C参数指向Python对象.PyTuple_Pack(2, a, b)相当于Py_BuildValue("(OO)", a, b).

Py_ssize_t PyTuple_Size PyObject *p
拿一个指向元组对象的指针,然后返回那个元组的大小.
Py_ssize_t PyTuple_GET_SIZE PyObject *p
返回元组p的大小,它必须是非NULL并指向一个元组;不执行错误检查.
PyObject* PyTuple_GetItem PyObject  *p,Py_ssize_t  pos
Return value: Borrowed reference.

将对象返回到pos指向的元组中p的位置。如果pos超出界限,则返回NULL并设置IndexError例外.

PyObject* PyTuple_GET_ITEMPyObject  *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中取出lowhigh并将它作为一个新的元组返回

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,并选择MemoryErrorSystemError.
int PyTuple_ClearFreeList
清除免费清单。返回已释放物品的总数.

结构序列对象

结构序列对象是等效的namedtuple()对象,即也可以通过属性访问其项目的序列。要创建结构序列,首先必须创建一个特定的struct sequencetype.

PyTypeObject* PyStructSequence_NewTypePyStructSequence_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.

评论被关闭。