From 21dc5bacad13bab4517c99e356b3b146a37d1f12 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Sat, 11 Jul 2009 10:43:08 +0000 Subject: #6421: The self argument of module-level PyCFunctions is now a reference to the module object. --- Doc/c-api/structures.rst | 16 +++++++--------- Doc/extending/extending.rst | 6 ++---- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst index 7048968..87bd362 100644 --- a/Doc/c-api/structures.rst +++ b/Doc/c-api/structures.rst @@ -146,12 +146,10 @@ convention flags can be combined with a binding flag. This is the typical calling convention, where the methods have the type :ctype:`PyCFunction`. The function expects two :ctype:`PyObject\*` values. - The first one is the *self* object for methods; for module functions, it - has the value given to :cfunc:`Py_InitModule4` (or *NULL* if - :cfunc:`Py_InitModule` was used). The second parameter (often called - *args*) is a tuple object representing all arguments. This parameter is - typically processed using :cfunc:`PyArg_ParseTuple` or - :cfunc:`PyArg_UnpackTuple`. + The first one is the *self* object for methods; for module functions, it is + the module object. The second parameter (often called *args*) is a tuple + object representing all arguments. This parameter is typically processed + using :cfunc:`PyArg_ParseTuple` or :cfunc:`PyArg_UnpackTuple`. .. data:: METH_KEYWORDS @@ -167,9 +165,9 @@ convention flags can be combined with a binding flag. 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 - :ctype:`PyCFunction`. When used with object methods, the first parameter is - typically named ``self`` and will hold a reference to the object instance. - In all cases the second parameter will be *NULL*. + :ctype:`PyCFunction`. The first parameter is typically named *self* and will + hold a reference to the module or object instance. In all cases the second + parameter will be *NULL*. .. data:: METH_O diff --git a/Doc/extending/extending.rst b/Doc/extending/extending.rst index 7e680db..497180a 100644 --- a/Doc/extending/extending.rst +++ b/Doc/extending/extending.rst @@ -82,10 +82,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* and *args*. -The *self* argument is only used when the C function implements a built-in -method, not a function. In the example, *self* will always be a *NULL* pointer, -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 *self* argument points to the module object for module-level functions; +for a method it would point to the object instance. 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 -- cgit v0.12