From: Georg Brandl Date: Sat, 11 Jul 2009 10:43:08 +0000 (+0000) Subject: #6421: The self argument of module-level PyCFunctions is now a reference to the modul... X-Git-Tag: v3.2a1~2849 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=21dc5bacad13bab4517c99e356b3b146a37d1f12;p=thirdparty%2FPython%2Fcpython.git #6421: The self argument of module-level PyCFunctions is now a reference to the module object. --- diff --git a/Doc/c-api/structures.rst b/Doc/c-api/structures.rst index 704896883bcc..87bd362494d2 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 7e680dbca892..497180a692a8 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