summaryrefslogtreecommitdiffstats
path: root/Doc
diff options
context:
space:
mode:
authorGouvernathor <44340603+Gouvernathor@users.noreply.github.com>2024-03-01 15:51:47 (GMT)
committerGitHub <noreply@github.com>2024-03-01 15:51:47 (GMT)
commit2713c2abc8d0f30cd0060cd307bb4ec92f1f04bf (patch)
tree0978015bfff655843d6ee0a8cd26dc6b7e2d3bc2 /Doc
parentfee86fd9a422612b39e5aabf2571b8fe4abac770 (diff)
downloadcpython-2713c2abc8d0f30cd0060cd307bb4ec92f1f04bf.zip
cpython-2713c2abc8d0f30cd0060cd307bb4ec92f1f04bf.tar.gz
cpython-2713c2abc8d0f30cd0060cd307bb4ec92f1f04bf.tar.bz2
gh-104219: Document that idunders can return NotImplemented (#104220)
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM> Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
Diffstat (limited to 'Doc')
-rw-r--r--Doc/reference/datamodel.rst6
1 files changed, 4 insertions, 2 deletions
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 1aef266..82106a4 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -3044,10 +3044,12 @@ left undefined.
(``+=``, ``-=``, ``*=``, ``@=``, ``/=``, ``//=``, ``%=``, ``**=``, ``<<=``,
``>>=``, ``&=``, ``^=``, ``|=``). These methods should attempt to do the
operation in-place (modifying *self*) and return the result (which could be,
- but does not have to be, *self*). If a specific method is not defined, the
+ but does not have to be, *self*). If a specific method is not defined, or if
+ that method returns :data:`NotImplemented`, the
augmented assignment falls back to the normal methods. For instance, if *x*
is an instance of a class with an :meth:`__iadd__` method, ``x += y`` is
- equivalent to ``x = x.__iadd__(y)`` . Otherwise, ``x.__add__(y)`` and
+ equivalent to ``x = x.__iadd__(y)`` . If :meth:`__iadd__` does not exist, or if ``x.__iadd__(y)``
+ returns :data:`!NotImplemented`, ``x.__add__(y)`` and
``y.__radd__(x)`` are considered, as with the evaluation of ``x + y``. In
certain situations, augmented assignment can result in unexpected errors (see
:ref:`faq-augmented-assignment-tuple-error`), but this behavior is in fact