[3.12] Programming FAQ: Mention object.__setattr__ as a technique for delegation (GH-124617) (#124625)

Co-authored-by: Jelle Zijlstra <jelle.zijlstra@gmail.com>
This commit is contained in:
Miss Islington (bot) 2024-09-26 21:19:57 +02:00 committed by GitHub
parent a0c90b36f6
commit 27890edd5a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -1613,9 +1613,16 @@ method too, and it must do so carefully. The basic implementation of
self.__dict__[name] = value
...
Most :meth:`!__setattr__` implementations must modify
:attr:`self.__dict__ <object.__dict__>` to store
local state for self without causing an infinite recursion.
Many :meth:`~object.__setattr__` implementations call :meth:`!object.__setattr__` to set
an attribute on self without causing infinite recursion::
class X:
def __setattr__(self, name, value):
# Custom logic here...
object.__setattr__(self, name, value)
Alternatively, it is possible to set attributes by inserting
entries into :attr:`self.__dict__ <object.__dict__>` directly.
How do I call a method defined in a base class from a derived class that extends it?