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

index 0b513f9c95f95ba33263c926452867a41cded4e8..923bbe81ad0031916be0b594bd074752c72d671f 100644 (file)
@@ -210,25 +210,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.