From d1f318105b8781b01f3507d5cb0fd841b977d5f2 Mon Sep 17 00:00:00 2001 From: Cheryl Sabella Date: Sun, 4 Feb 2018 21:03:22 -0500 Subject: [PATCH] bpo-8722: Document __getattr__ behavior with AttributeError in property (GH-4754) When `__getattr__` is implemented, attribute lookup will always fall back to that, even if the initial failure comes from `__getattribute__` or a descriptor's `__get__` method (including property methods). --- Doc/reference/datamodel.rst | 10 ++++++---- .../2018-02-03-06-11-37.bpo-8722.MPyVyj.rst | 2 ++ 2 files changed, 8 insertions(+), 4 deletions(-) create mode 100644 Misc/NEWS.d/next/Documentation/2018-02-03-06-11-37.bpo-8722.MPyVyj.rst diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index 25b95c1154..8420fb60bf 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -1463,10 +1463,12 @@ access (use of, assignment to, or deletion of ``x.name``) for class instances. .. method:: object.__getattr__(self, name) - Called when an attribute lookup has not found the attribute in the usual places - (i.e. it is not an instance attribute nor is it found in the class tree for - ``self``). ``name`` is the attribute name. This method should return the - (computed) attribute value or raise an :exc:`AttributeError` exception. + Called when the default attribute access fails with an :exc:`AttributeError` + (either :meth:`__getattribute__` raises an :exc:`AttributeError` because + *name* is not an instance attribute or an attribute in the class tree + for ``self``; or :meth:`__get__` of a *name* property raises + :exc:`AttributeError`). This method should either return the (computed) + attribute value or raise an :exc:`AttributeError` exception. Note that if the attribute is found through the normal mechanism, :meth:`__getattr__` is not called. (This is an intentional asymmetry between diff --git a/Misc/NEWS.d/next/Documentation/2018-02-03-06-11-37.bpo-8722.MPyVyj.rst b/Misc/NEWS.d/next/Documentation/2018-02-03-06-11-37.bpo-8722.MPyVyj.rst new file mode 100644 index 0000000000..36e6ff7db3 --- /dev/null +++ b/Misc/NEWS.d/next/Documentation/2018-02-03-06-11-37.bpo-8722.MPyVyj.rst @@ -0,0 +1,2 @@ +Document :meth:`__getattr__` behavior when property :meth:`get` method +raises :exc:`AttributeError`. -- 2.40.0