diff options
author | Raymond Hettinger <rhettinger@users.noreply.github.com> | 2021-04-23 03:02:46 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-04-23 03:02:46 (GMT) |
commit | fe240882936d8b16b968b9a7adce6b2b3de4e7eb (patch) | |
tree | c8c7f142ae4e9f3a2c80b50fe7361b11bf6307ad /Doc/howto/descriptor.rst | |
parent | 702a0885ba3636959d4c176797814937c497b986 (diff) | |
download | cpython-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.rst | 21 |
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:: |