From: Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> Date: Fri, 23 Apr 2021 03:26:56 +0000 (-0700) Subject: Add more tests. Fix code excerpt. (GH-25549) (GH-25550) X-Git-Tag: v3.9.5~60 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=8db72cd342917e68a42edcc41b25c58ac33ca928;p=thirdparty%2FPython%2Fcpython.git Add more tests. Fix code excerpt. (GH-25549) (GH-25550) --- diff --git a/Doc/howto/descriptor.rst b/Doc/howto/descriptor.rst index eef6b2dfa00c..9f0dd2f1f155 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: @@ -1354,9 +1368,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::