]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #17351: Modernize the pure Python property() example.
authorRaymond Hettinger <python@rcn.com>
Sun, 10 Mar 2013 16:36:52 +0000 (09:36 -0700)
committerRaymond Hettinger <python@rcn.com>
Sun, 10 Mar 2013 16:36:52 +0000 (09:36 -0700)
Doc/howto/descriptor.rst

index ce4b6bb0ed24bbbb6a340c1a4f16bc885aa195bb..0db96d63943b593cce823fd48c6bebf9f2293246 100644 (file)
@@ -218,25 +218,36 @@ here is a pure Python equivalent::
             self.fget = fget
             self.fset = fset
             self.fdel = fdel
+            if doc is None and fget is not None:
+                doc = fget.__doc__
             self.__doc__ = doc
 
         def __get__(self, obj, objtype=None):
             if obj is None:
                 return self
             if self.fget is None:
-                raise AttributeError, "unreadable attribute"
+                raise AttributeError("unreadable attribute")
             return self.fget(obj)
 
         def __set__(self, obj, value):
             if self.fset is None:
-                raise AttributeError, "can't set attribute"
+                raise AttributeError("can't set attribute")
             self.fset(obj, value)
 
         def __delete__(self, obj):
             if self.fdel is None:
-                raise AttributeError, "can't delete attribute"
+                raise AttributeError("can't delete attribute")
             self.fdel(obj)
 
+        def getter(self, fget):
+            return type(self)(fget, self.fset, self.fdel, self.__doc__)
+
+        def setter(self, fset):
+            return type(self)(self.fget, fset, self.fdel, self.__doc__)
+
+        def deleter(self, fdel):
+            return type(self)(self.fget, self.fset, fdel, self.__doc__)
+
 The :func:`property` builtin helps whenever a user interface has granted
 attribute access and then subsequent changes require the intervention of a
 method.