[Python-checkins] [3.6] bpo-8722: Document __getattr__ behavior with AttributeError in property (GH-5542)
Nick Coghlan
webhook-mailer at python.org
Sun Feb 4 22:10:03 EST 2018
https://github.com/python/cpython/commit/a8c25d1c7f0d395861cc3e10dd01989150891c95
commit: a8c25d1c7f0d395861cc3e10dd01989150891c95
branch: 3.6
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: Nick Coghlan <ncoghlan at gmail.com>
date: 2018-02-05T13:10:00+10:00
summary:
[3.6] bpo-8722: Document __getattr__ behavior with AttributeError in property (GH-5542)
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 at gmail.com>
files:
A Misc/NEWS.d/next/Documentation/2018-02-03-06-11-37.bpo-8722.MPyVyj.rst
M Doc/reference/datamodel.rst
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 9752494972ff..773eeb233540 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -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
index 000000000000..36e6ff7db3ce
--- /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`.
More information about the Python-checkins
mailing list