mirror of https://github.com/python/cpython
gh-102468: Document `PyCFunction_New*` and `PyCMethod_New` (GH-112557)
Co-authored-by: Erlend E. Aasland <erlend.aasland@protonmail.com>
This commit is contained in:
parent
c361a1f395
commit
a482bc67ee
|
@ -399,6 +399,40 @@ definition with the same method name.
|
||||||
slot. This is helpful because calls to PyCFunctions are optimized more
|
slot. This is helpful because calls to PyCFunctions are optimized more
|
||||||
than wrapper object calls.
|
than wrapper object calls.
|
||||||
|
|
||||||
|
.. c:function:: PyObject * PyCMethod_New(PyMethodDef *ml, PyObject *self, PyObject *module, PyTypeObject *cls)
|
||||||
|
|
||||||
|
Turn *ml* into a Python :term:`callable` object.
|
||||||
|
The caller must ensure that *ml* outlives the :term:`callable`.
|
||||||
|
Typically, *ml* is defined as a static variable.
|
||||||
|
|
||||||
|
The *self* parameter will be passed as the *self* argument
|
||||||
|
to the C function in ``ml->ml_meth`` when invoked.
|
||||||
|
*self* can be ``NULL``.
|
||||||
|
|
||||||
|
The :term:`callable` object's ``__module__`` attribute
|
||||||
|
can be set from the given *module* argument.
|
||||||
|
*module* should be a Python string,
|
||||||
|
which will be used as name of the module the function is defined in.
|
||||||
|
If unavailable, it can be set to :const:`None` or ``NULL``.
|
||||||
|
|
||||||
|
.. seealso:: :attr:`function.__module__`
|
||||||
|
|
||||||
|
The *cls* parameter will be passed as the *defining_class*
|
||||||
|
argument to the C function.
|
||||||
|
Must be set if :c:macro:`METH_METHOD` is set on ``ml->ml_flags``.
|
||||||
|
|
||||||
|
.. versionadded:: 3.9
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: PyObject * PyCFunction_NewEx(PyMethodDef *ml, PyObject *self, PyObject *module)
|
||||||
|
|
||||||
|
Equivalent to ``PyCMethod_New(ml, self, module, NULL)``.
|
||||||
|
|
||||||
|
|
||||||
|
.. c:function:: PyObject * PyCFunction_New(PyMethodDef *ml, PyObject *self)
|
||||||
|
|
||||||
|
Equivalent to ``PyCMethod_New(ml, self, NULL, NULL)``.
|
||||||
|
|
||||||
|
|
||||||
Accessing attributes of extension types
|
Accessing attributes of extension types
|
||||||
---------------------------------------
|
---------------------------------------
|
||||||
|
|
|
@ -402,6 +402,21 @@ PyContextVar_Reset:int:::
|
||||||
PyContextVar_Reset:PyObject*:var:0:
|
PyContextVar_Reset:PyObject*:var:0:
|
||||||
PyContextVar_Reset:PyObject*:token:-1:
|
PyContextVar_Reset:PyObject*:token:-1:
|
||||||
|
|
||||||
|
PyCFunction_New:PyObject*::+1:
|
||||||
|
PyCFunction_New:PyMethodDef*:ml::
|
||||||
|
PyCFunction_New:PyObject*:self:+1:
|
||||||
|
|
||||||
|
PyCFunction_NewEx:PyObject*::+1:
|
||||||
|
PyCFunction_NewEx:PyMethodDef*:ml::
|
||||||
|
PyCFunction_NewEx:PyObject*:self:+1:
|
||||||
|
PyCFunction_NewEx:PyObject*:module:+1:
|
||||||
|
|
||||||
|
PyCMethod_New:PyObject*::+1:
|
||||||
|
PyCMethod_New:PyMethodDef*:ml::
|
||||||
|
PyCMethod_New:PyObject*:self:+1:
|
||||||
|
PyCMethod_New:PyObject*:module:+1:
|
||||||
|
PyCMethod_New:PyObject*:cls:+1:
|
||||||
|
|
||||||
PyDate_Check:int:::
|
PyDate_Check:int:::
|
||||||
PyDate_Check:PyObject*:ob:0:
|
PyDate_Check:PyObject*:ob:0:
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue