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

设置对象

本节详细介绍了setfrozenset对象的公共API。下面列出的任何功能最好使用抽象对象协议(包括PyObject_CallMethod(),PyObject_RichCompareBool(), PyObject_Hash(),PyObject_Repr(), PyObject_IsTrue(), PyObject_Print(),和PyObject_GetIter())或抽象数字协议(包括PyNumber_And(), PyNumber_Subtract(), PyNumber_Or(),PyNumber_Xor(), PyNumber_InPlaceAnd(),PyNumber_InPlaceSubtract(), PyNumber_InPlaceOr()PyNumber_InPlaceXor()).

PySetObject
PyObject的这个子类型用于保存setfrozenset对象的内部数据。就像一个PyDictObject因为对于小型集合来说它是一个固定的大小(很像元组存储),并且它将指向一个单独的,可变大小的内存块,用于中型和大型集合(很像列表存储)。这种结构的所有领域都不应被公认,并且可能会发生变化。所有访问都应该通过文档化的API完成,而不是通过操作结构中的值来完成.
PyTypeObject PySet_Type
这是PyTypeObject代表Python set类型。
PyTypeObject PyFrozenSet_Type
这是PyTypeObject代表Python frozenset类型。

以下类型检查宏可用于指向任何Python对象的指针。同样,构造函数可以处理任何可迭代的Python对象.

int PySet_Check PyObject  *p
如果pset对象或子类型的实例,则返回true.
int PyFrozenSet_Check PyObject  *p
如果pfrozenset对象或asubtype的实例,则返回true。
int  PyAnySet_Check的PyObject  *p
如果pset对象,frozenset对象或子类型的实例.
int PyAnySet_CheckExact的PyObject  *p
如果pset对象或frozenset对象但不是子类型的实例.
int PyFrozenSet_CheckExact的PyObject  *p
如果pfrozenset对象但不是asubtype的实例.
PyObject * PySet_New的PyObject  *iterable
Return value: New reference.

返回一个新的set包含iterable返回的对象。iterable可能是NULL来创建一个新的空集。在失败时返回新设置onsuccess或NULL举起TypeError如果iterable实际上是可迭代的。构造函数也可用于复制集合(c=set(s)).

PyObject * PyFrozenSet_New PyObject  *iterable
Return value: New reference.

返回一个新的frozenset包含iterable返回的对象.iterable可能是NULL创建一个新的空冻结集。成功时返回最新值或失败时返回NULL。如果TypeError实际上是不可迭代的话iterable举起

以下函数和宏可用于setfrozenset的实例或其子类的实例.

Py_ssize_t PySet_Size PyObject *anyset

返回setfrozenset宾语。相当于len(anyset)。如果PyExc_SystemError不是anyset,或者是子类型的实例,则会引发set, frozenset.

Py_ssize_t PySet_GET_SIZE PyObject  *anyset
PySet_Size()的宏形式,没有错误检查.
int PySet_Contains PyObject  *anyset,PyObject  *key
返回1如果找到,0如果没有找到,则-1如果遇到错误。Unlikethe Python __contains__()方法,此函数不会自动将不可用的集转换为临时的冻结集。如果TypeError不可用,请举起key。如果PyExc_SystemError不是anyset就举起set, frozenset,或子类的一个实例.
int PySet_Add PyObject  *set,PyObject  *key
key添加到set实例中。也适用于frozenset实例(如PyTuple_SetItem()它可用于填写全新frozensets的值,然后再将其暴露给其他代码)。在失败时返回0 onsuccess或-1。如果TypeError不可用,请举起key。举起MemoryError如果没有成长的空间。举起SystemError如果set不是set或者itssubtype.

以下功能适用于set或者它的子类型,但不适用于frozenset或其子类型的实例.

int PySet_Discard PyObject  *set,PyObject  *key
返回1如果找到并删除,0如果没有找到(没有采取任何行动),和-1如果遇到错误。不提出KeyError缺少钥匙。如果TypeError不可用,请举起key。与Python discard()方法不同,此函数不会自动转换不可用的集合intotemporary frozensets。举起PyExc_SystemError如果set不是set或其子类型的实例.
PyObject* PySet_Pop PyObject *set
Return value: New reference.

返回对set中任意对象的新引用,并从set中删除对象。失败时返回NULL。如果这些是空的,请举起KeyError。举起SystemError如果set不是set的实例或其子类型

//int PySet_ClearPyObject  *set
清空现有的所有元素.
int PySet_ClearFreeList
清除免费清单。返回已释放物品的总数.

3.3版本中的新品.

评论被关闭。