summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGeorg Brandl <georg@python.org>2009-07-11 10:43:08 (GMT)
committerGeorg Brandl <georg@python.org>2009-07-11 10:43:08 (GMT)
commit21dc5bacad13bab4517c99e356b3b146a37d1f12 (patch)
treeacb9db6616924ed1040c0b84be079c16eb5c1fac
parent216cca7d44d28d2c960bac8eefa3c794dcb220b2 (diff)
downloadcpython-21dc5bacad13bab4517c99e356b3b146a37d1f12.zip
cpython-21dc5bacad13bab4517c99e356b3b146a37d1f12.tar.gz
cpython-21dc5bacad13bab4517c99e356b3b146a37d1f12.tar.bz2
#6421: The self argument of module-level PyCFunctions is now a reference to the module object.
-rw-r--r--Doc/c-api/structures.rst16
-rw-r--r--Doc/extending/extending.rst6
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