summaryrefslogtreecommitdiffstats
path: root/Doc/reference
diff options
context:
space:
mode:
authorCheryl Sabella <cheryl.sabella@gmail.com>2018-02-05 02:03:22 (GMT)
committerNick Coghlan <ncoghlan@gmail.com>2018-02-05 02:03:22 (GMT)
commitd1f318105b8781b01f3507d5cb0fd841b977d5f2 (patch)
treea6e99b5ab1183095acd89ced108e2836c2ebaa53 /Doc/reference
parent05e806767b857b1eab838e712828e3a7d57cabf1 (diff)
downloadcpython-d1f318105b8781b01f3507d5cb0fd841b977d5f2.zip
cpython-d1f318105b8781b01f3507d5cb0fd841b977d5f2.tar.gz
cpython-d1f318105b8781b01f3507d5cb0fd841b977d5f2.tar.bz2
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).
Diffstat (limited to 'Doc/reference')
-rw-r--r--Doc/reference/datamodel.rst10
1 files changed, 6 insertions, 4 deletions
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 25b95c1..8420fb6 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