[Python-checkins] r63043 - python/trunk/Doc/library/functions.rst

georg.brandl python-checkins at python.org
Sun May 11 10:47:54 CEST 2008


Author: georg.brandl
Date: Sun May 11 10:47:53 2008
New Revision: 63043

Log:
#2812: document property.getter/setter/deleter.


Modified:
   python/trunk/Doc/library/functions.rst

Modified: python/trunk/Doc/library/functions.rst
==============================================================================
--- python/trunk/Doc/library/functions.rst	(original)
+++ python/trunk/Doc/library/functions.rst	Sun May 11 10:47:53 2008
@@ -874,10 +874,15 @@
    use is to define a managed attribute x::
 
       class C(object):
-          def __init__(self): self._x = None
-          def getx(self): return self._x
-          def setx(self, value): self._x = value
-          def delx(self): del self._x
+          def __init__(self):
+              self._x = None
+
+          def getx(self):
+              return self._x
+          def setx(self, value):
+              self._x = value
+          def delx(self):
+              del self._x
           x = property(getx, setx, delx, "I'm the 'x' property.")
 
    If given, *doc* will be the docstring of the property attribute. Otherwise, the
@@ -893,14 +898,45 @@
               """Get the current voltage."""
               return self._voltage
 
-   turns the :meth:`voltage` method into a "getter" for a read-only attribute with
-   the same name.
+   turns the :meth:`voltage` method into a "getter" for a read-only attribute
+   with the same name.
+
+   A property object has :attr:`getter`, :attr:`setter`, and :attr:`deleter`
+   methods usable as decorators that create a copy of the property with the
+   corresponding accessor function set to the decorated function.  This is
+   best explained with an example::
+
+      class C(object):
+          def __init__(self): self._x = None
+
+          @property
+          def x(self):
+              """I'm the 'x' property."""
+              return self._x
+
+          @x.setter
+          def x(self, value):
+              self._x = value
+
+          @x.deleter
+          def x(self):
+              del self._x
+
+   This code is exactly equivalent to the first example.  Be sure to give the
+   additional functions the same name as the original property (``x`` in this
+   case.)
+
+   The returned property also has the attributes ``fget``, ``fset``, and
+   ``fdel`` corresponding to the constructor arguments.
 
    .. versionadded:: 2.2
 
    .. versionchanged:: 2.5
       Use *fget*'s docstring if no *doc* given.
 
+   .. versionchanged:: 2.6 
+      The ``getter``, ``setter``, and ``deleter`` attributes were added.
+
 
 .. function:: range([start,] stop[, step])
 


More information about the Python-checkins mailing list