]> granicus.if.org Git - python/commitdiff
[3.6] bpo-8722: Document __getattr__ behavior with AttributeError in property (GH...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 5 Feb 2018 03:10:00 +0000 (19:10 -0800)
committerNick Coghlan <ncoghlan@gmail.com>
Mon, 5 Feb 2018 03:10:00 +0000 (13:10 +1000)
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).
(cherry picked from commit d1f318105b8781b01f3507d5cb0fd841b977d5f2)

Co-authored-by: Cheryl Sabella <cheryl.sabella@gmail.com>
Doc/reference/datamodel.rst
Misc/NEWS.d/next/Documentation/2018-02-03-06-11-37.bpo-8722.MPyVyj.rst [new file with mode: 0644]

index 9752494972fff54298089cfb983ddf8c181e5b23..773eeb233540169620a6cc007c018294df47f500 100644 (file)
@@ -1443,10 +1443,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 (file)
index 0000000..36e6ff7
--- /dev/null
@@ -0,0 +1,2 @@
+Document :meth:`__getattr__` behavior when property :meth:`get` method
+raises :exc:`AttributeError`.