summaryrefslogtreecommitdiffstats
path: root/Doc/howto/descriptor.rst
diff options
context:
space:
mode:
authorRaymond Hettinger <rhettinger@users.noreply.github.com>2021-04-23 03:02:46 (GMT)
committerGitHub <noreply@github.com>2021-04-23 03:02:46 (GMT)
commitfe240882936d8b16b968b9a7adce6b2b3de4e7eb (patch)
treec8c7f142ae4e9f3a2c80b50fe7361b11bf6307ad /Doc/howto/descriptor.rst
parent702a0885ba3636959d4c176797814937c497b986 (diff)
downloadcpython-fe240882936d8b16b968b9a7adce6b2b3de4e7eb.zip
cpython-fe240882936d8b16b968b9a7adce6b2b3de4e7eb.tar.gz
cpython-fe240882936d8b16b968b9a7adce6b2b3de4e7eb.tar.bz2
Add more tests. Fix code excerpt. (GH-25549)
Diffstat (limited to 'Doc/howto/descriptor.rst')
-rw-r--r--Doc/howto/descriptor.rst21
1 files changed, 18 insertions, 3 deletions
diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst
index 074591f..575caeb 100644
--- a/Doc/howto/descriptor.rst
+++ b/Doc/howto/descriptor.rst
@@ -953,6 +953,20 @@ The documentation shows a typical use to define a managed attribute ``x``:
def delx(self): del self.__x
x = property(getx, setx, delx, "I'm the 'x' property.")
+.. doctest::
+ :hide:
+
+ >>> C.x.__doc__
+ "I'm the 'x' property."
+ >>> c.x = 2.71828
+ >>> c.x
+ 2.71828
+ >>> del c.x
+ >>> c.x
+ Traceback (most recent call last):
+ ...
+ AttributeError: 'C' object has no attribute '_C__x'
+
To see how :func:`property` is implemented in terms of the descriptor protocol,
here is a pure Python equivalent:
@@ -1364,9 +1378,10 @@ Using the non-data descriptor protocol, a pure Python version of
"A doc for 'T'"
-The code path for ``hasattr(obj, '__get__')`` was added in Python 3.9 and
-makes it possible for :func:`classmethod` to support chained decorators.
-For example, a classmethod and property could be chained together:
+The code path for ``hasattr(type(self.f), '__get__')`` was added in
+Python 3.9 and makes it possible for :func:`classmethod` to support
+chained decorators. For example, a classmethod and property could be
+chained together:
.. testcode::