summaryrefslogtreecommitdiffstats
path: root/Doc/howto/descriptor.rst
diff options
context:
space:
mode:
authorBenjamin Peterson <benjamin@python.org>2014-10-07 01:10:25 (GMT)
committerBenjamin Peterson <benjamin@python.org>2014-10-07 01:10:25 (GMT)
commit57fb11b255487756a829c779fe23cd419d019519 (patch)
tree941bd3c6f247f9f89c544cf431017a759b9811f2 /Doc/howto/descriptor.rst
parent9205e9ebdc3440cfdcf557e807dc693c3d226f61 (diff)
downloadcpython-57fb11b255487756a829c779fe23cd419d019519.zip
cpython-57fb11b255487756a829c779fe23cd419d019519.tar.gz
cpython-57fb11b255487756a829c779fe23cd419d019519.tar.bz2
use source role instead of linking to svn
Diffstat (limited to 'Doc/howto/descriptor.rst')
-rw-r--r--Doc/howto/descriptor.rst17
1 files changed, 8 insertions, 9 deletions
diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst
index a0c6988..4a77052 100644
--- a/Doc/howto/descriptor.rst
+++ b/Doc/howto/descriptor.rst
@@ -92,9 +92,9 @@ For objects, the machinery is in :meth:`object.__getattribute__` which
transforms ``b.x`` into ``type(b).__dict__['x'].__get__(b, type(b))``. The
implementation works through a precedence chain that gives data descriptors
priority over instance variables, instance variables priority over non-data
-descriptors, and assigns lowest priority to :meth:`__getattr__` if provided. The
-full C implementation can be found in :c:func:`PyObject_GenericGetAttr()` in
-`Objects/object.c <http://svn.python.org/view/python/trunk/Objects/object.c?view=markup>`_\.
+descriptors, and assigns lowest priority to :meth:`__getattr__` if provided.
+The full C implementation can be found in :c:func:`PyObject_GenericGetAttr()` in
+:source:`Objects/object.c`.
For classes, the machinery is in :meth:`type.__getattribute__` which transforms
``B.x`` into ``B.__dict__['x'].__get__(None, B)``. In pure Python, it looks
@@ -124,8 +124,8 @@ and then returns ``A.__dict__['m'].__get__(obj, B)``. If not a descriptor,
search using :meth:`object.__getattribute__`.
The implementation details are in :c:func:`super_getattro()` in
-`Objects/typeobject.c <http://svn.python.org/view/python/trunk/Objects/typeobject.c?view=markup>`_
-and a pure Python equivalent can be found in `Guido's Tutorial`_.
+:source:`Objects/typeobject.c`. and a pure Python equivalent can be found in
+`Guido's Tutorial`_.
.. _`Guido's Tutorial`: http://www.python.org/2.2.3/descrintro.html#cooperation
@@ -300,10 +300,9 @@ Running the interpreter shows how the function descriptor works in practice::
The output suggests that bound and unbound methods are two different types.
While they could have been implemented that way, the actual C implementation of
-:c:type:`PyMethod_Type` in
-`Objects/classobject.c <http://svn.python.org/view/python/trunk/Objects/classobject.c?view=markup>`_
-is a single object with two different representations depending on whether the
-:attr:`im_self` field is set or is *NULL* (the C equivalent of *None*).
+:c:type:`PyMethod_Type` in :source:`Objects/classobject.c` is a single object
+with two different representations depending on whether the :attr:`im_self`
+field is set or is *NULL* (the C equivalent of *None*).
Likewise, the effects of calling a method object depend on the :attr:`im_self`
field. If set (meaning bound), the original function (stored in the