#10398: manual backport of r73943.

This commit is contained in:
Georg Brandl 2010-11-12 19:45:46 +00:00
parent 6e4300c999
commit 749930f0f0
2 changed files with 9 additions and 13 deletions

View file

@ -137,12 +137,10 @@ convention flags can be combined with a binding flag.
This is the typical calling convention, where the methods have the type This is the typical calling convention, where the methods have the type
:ctype:`PyCFunction`. The function expects two :ctype:`PyObject\*` values. :ctype:`PyCFunction`. The function expects two :ctype:`PyObject\*` values.
The first one is the *self* object for methods; for module functions, it The first one is the *self* object for methods; for module functions, it is
has the value given to :cfunc:`Py_InitModule4` (or *NULL* if the module object. The second parameter (often called *args*) is a tuple
:cfunc:`Py_InitModule` was used). The second parameter (often called object representing all arguments. This parameter is typically processed
*args*) is a tuple object representing all arguments. This parameter is using :cfunc:`PyArg_ParseTuple` or :cfunc:`PyArg_UnpackTuple`.
typically processed using :cfunc:`PyArg_ParseTuple` or
:cfunc:`PyArg_UnpackTuple`.
.. data:: METH_KEYWORDS .. data:: METH_KEYWORDS
@ -158,9 +156,9 @@ convention flags can be combined with a binding flag.
Methods without parameters don't need to check whether arguments are given if Methods without parameters don't need to check whether arguments are given if
they are listed with the :const:`METH_NOARGS` flag. They need to be of type they are listed with the :const:`METH_NOARGS` flag. They need to be of type
:ctype:`PyCFunction`. When used with object methods, the first parameter is :ctype:`PyCFunction`. The first parameter is typically named ``self`` and
typically named ``self`` and will hold a reference to the object instance. will hold a reference to the module or object instance. In all cases the
In all cases the second parameter will be *NULL*. second parameter will be *NULL*.
.. data:: METH_O .. data:: METH_O

View file

@ -89,10 +89,8 @@ example, the single expression ``"ls -l"``) to the arguments passed to the C
function. The C function always has two arguments, conventionally named *self* function. The C function always has two arguments, conventionally named *self*
and *args*. and *args*.
The *self* argument is only used when the C function implements a built-in The *self* argument points to the module object for module-level functions;
method, not a function. In the example, *self* will always be a *NULL* pointer, for a method it would point to the object instance.
since we are defining a function, not a method. (This is done so that the
interpreter doesn't have to understand two different types of C functions.)
The *args* argument will be a pointer to a Python tuple object containing the The *args* argument will be a pointer to a Python tuple object containing the
arguments. Each item of the tuple corresponds to an argument in the call's arguments. Each item of the tuple corresponds to an argument in the call's