from ``PyObject``.
Can only be used as part of :c:member:`Py_tp_members <PyTypeObject.tp_members>`
- :c:type:`slot <PyTypeSlot>` when creating a class using negative
+ :c:type:`slot <PyType_Slot>` when creating a class using negative
:c:member:`~PyType_Spec.basicsize`.
It is mandatory in that case.
- This flag is only used in :c:type:`PyTypeSlot`.
+ This flag is only used in :c:type:`PyType_Slot`.
When setting :c:member:`~PyTypeObject.tp_members` during
class creation, Python clears it and sets
:c:member:`PyMemberDef.offset` to the offset from the ``PyObject`` struct.
.. c:member:: setter set
- Optional C function to set or delete the attribute, if omitted the attribute is readonly.
+ Optional C function to set or delete the attribute.
+ If ``NULL``, the attribute is read-only.
.. c:member:: const char* doc
Optional function pointer, providing additional data for getter and setter.
- The ``get`` function takes one :c:expr:`PyObject*` parameter (the
- instance) and a function pointer (the associated ``closure``)::
+.. c:type:: PyObject *(*getter)(PyObject *, void *)
- typedef PyObject *(*getter)(PyObject *, void *);
+ The ``get`` function takes one :c:expr:`PyObject*` parameter (the
+ instance) and a function pointer (the associated ``closure``):
It should return a new reference on success or ``NULL`` with a set exception
on failure.
- ``set`` functions take two :c:expr:`PyObject*` parameters (the instance and
- the value to be set) and a function pointer (the associated ``closure``)::
+.. c:type:: int (*setter)(PyObject *, PyObject *, void *)
- typedef int (*setter)(PyObject *, PyObject *, void *);
+ ``set`` functions take two :c:expr:`PyObject*` parameters (the instance and
+ the value to be set) and a function pointer (the associated ``closure``):
In case the attribute should be deleted the second parameter is ``NULL``.
Should return ``0`` on success or ``-1`` with a set exception on failure.