PyTupleObject
PyObject
represents a Python tuple object.PyTuple_Type
PyTypeObject
represents the Python tuple type; it is the same object as tuple
in the Python layer.PyTuple_Check
(PyObject *p)PyTuple_CheckExact
(PyObject *p)PyTuple_New
(Py_ssize_t len)Return value: New reference.
Return a new tuple object of size len, or NULL
on failure.
PyTuple_Pack
(Py_ssize_t n, ...)Return value: New reference.
Return a new tuple object of size n, or NULL
on failure. The tuple values
are initialized to the subsequent n C arguments pointing to Python objects.
PyTuple_Pack(2, a, b)
is equivalent to Py_BuildValue("(OO)", a, b)
.
PyTuple_Size
(PyObject *p)PyTuple_GET_SIZE
(PyObject *p)NULL
and point to a tuple; no error checking is performed.PyTuple_GetItem
(PyObject *p, Py_ssize_t pos)Return value: Borrowed reference.
Return the object at position pos in the tuple pointed to by p. If pos is
out of bounds, return NULL
and set an IndexError
exception.
PyTuple_GET_ITEM
(PyObject *p, Py_ssize_t pos)Return value: Borrowed reference.
Like PyTuple_GetItem()
, but does no checking of its arguments.
PyTuple_GetSlice
(PyObject *p, Py_ssize_t low, Py_ssize_t high)Return value: New reference.
Return the slice of the tuple pointed to by p between low and high,
or NULL
on failure. This is the equivalent of the Python expression
p[low:high]
. Indexing from the end of the list is not supported.
PyTuple_SetItem
(PyObject *p, Py_ssize_t pos, PyObject *o)Insert a reference to object o at position pos of the tuple pointed to by
p. Return 0
on success. If pos is out of bounds, return -1
and set an IndexError
exception.
Note
This function “steals” a reference to o and discards a reference to an item already in the tuple at the affected position.
PyTuple_SET_ITEM
(PyObject *p, Py_ssize_t pos, PyObject *o)Like PyTuple_SetItem()
, but does no error checking, and should only be
used to fill in brand new tuples.
Note
This macro “steals” a reference to o, and, unlike
PyTuple_SetItem()
, does not discard a reference to any item that
is being replaced; any reference in the tuple at position pos will be
leaked.
_PyTuple_Resize
(PyObject **p, Py_ssize_t newsize)0
on success. Client code should never assume that the resulting value of *p
will be the same as before calling this function. If the object referenced by *p
is replaced, the original *p
is destroyed. On failure, returns -1
and sets *p
to NULL
, and raises MemoryError
or SystemError
.
Struct sequence objects are the C equivalent of namedtuple()
objects, i.e. a sequence whose items can also be accessed through attributes.
To create a struct sequence, you first have to create a specific struct sequence
type.
PyStructSequence_NewType
(PyStructSequence_Desc *desc)Return value: New reference.
Create a new struct sequence type from the data in desc, described below. Instances
of the resulting type can be created with PyStructSequence_New()
.
PyStructSequence_InitType
(PyTypeObject *type, PyStructSequence_Desc *desc)PyStructSequence_InitType2
(PyTypeObject *type, PyStructSequence_Desc *desc)The same as PyStructSequence_InitType
, but returns 0
on success and -1
on
failure.
New in version 3.4.
PyStructSequence_Desc
Contains the meta information of a struct sequence type to create.
Field |
C Type |
Meaning |
---|---|---|
|
|
name of the struct sequence type |
|
|
pointer to docstring for the type
or |
|
|
pointer to |
|
|
number of fields visible to the Python side (if used as tuple) |
PyStructSequence_Field
Describes a field of a struct sequence. As a struct sequence is modeled as a
tuple, all fields are typed as PyObject*
. The index in the
fields
array of the PyStructSequence_Desc
determines which
field of the struct sequence is described.
Field |
C Type |
Meaning |
---|---|---|
|
|
name for the field or the list of named fields, set to
|
|
|
field docstring or |
PyStructSequence_UnnamedField
Special value for a field name to leave it unnamed.
Changed in version 3.9: The type was changed from char *
.
PyStructSequence_New
(PyTypeObject *type)Return value: New reference.
Creates an instance of type, which must have been created with
PyStructSequence_NewType()
.
PyStructSequence_GetItem
(PyObject *p, Py_ssize_t pos)Return value: Borrowed reference.
Return the object at position pos in the struct sequence pointed to by p. No bounds checking is performed.
PyStructSequence_GET_ITEM
(PyObject *p, Py_ssize_t pos)Return value: Borrowed reference.
Macro equivalent of PyStructSequence_GetItem()
.
PyStructSequence_SetItem
(PyObject *p, Py_ssize_t pos, PyObject *o)Sets the field at index pos of the struct sequence p to value o. Like
PyTuple_SET_ITEM()
, this should only be used to fill in brand new
instances.
Note
This function “steals” a reference to o.
PyStructSequence_SET_ITEM
(PyObject *p, Py_ssize_t *pos, PyObject *o)Macro equivalent of PyStructSequence_SetItem()
.
Note
This function “steals” a reference to o.