diff options
| author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-05-22 11:06:46 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-22 11:06:46 (GMT) |
| commit | 11b5045b0ce18fee8cc1023cc516aeb14ebf7bda (patch) | |
| tree | bdd83cf26cdb955336d2408e117e710468958df4 | |
| parent | a373c8081148bf564512f00fb6106026f4ac72f8 (diff) | |
| download | cpython-11b5045b0ce18fee8cc1023cc516aeb14ebf7bda.zip cpython-11b5045b0ce18fee8cc1023cc516aeb14ebf7bda.tar.gz cpython-11b5045b0ce18fee8cc1023cc516aeb14ebf7bda.tar.bz2 | |
bpo-8264: Document hasattr and getattr behavior for private attributes (GH-23513) (GH-26238)
Clarify ``getattr`` and ``setattr`` requirements for accessing name-mangled attributes
Co-Authored-By: Catalin Iacob <iacobcatalin@gmail.com>
(cherry picked from commit 2edaf6a4fb7e20324dde1423232f07211347f092)
Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
| -rw-r--r-- | Doc/library/functions.rst | 14 | ||||
| -rw-r--r-- | Doc/reference/expressions.rst | 2 |
2 files changed, 16 insertions, 0 deletions
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst index 3a222b1..ce0d532 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -676,6 +676,13 @@ are always available. They are listed here in alphabetical order. ``x.foobar``. If the named attribute does not exist, *default* is returned if provided, otherwise :exc:`AttributeError` is raised. + .. note:: + + Since :ref:`private name mangling <private-name-mangling>` happens at + compilation time, one must manually mangle a private attribute's + (attributes with two leading underscores) name in order to retrieve it with + :func:`getattr`. + .. function:: globals() @@ -1495,6 +1502,13 @@ are always available. They are listed here in alphabetical order. object allows it. For example, ``setattr(x, 'foobar', 123)`` is equivalent to ``x.foobar = 123``. + .. note:: + + Since :ref:`private name mangling <private-name-mangling>` happens at + compilation time, one must manually mangle a private attribute's + (attributes with two leading underscores) name in order to set it with + :func:`setattr`. + .. class:: slice(stop) slice(start, stop[, step]) diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst index 8fead33..51fa750 100644 --- a/Doc/reference/expressions.rst +++ b/Doc/reference/expressions.rst @@ -77,6 +77,8 @@ When the name is bound to an object, evaluation of the atom yields that object. When a name is not bound, an attempt to evaluate it raises a :exc:`NameError` exception. +.. _private-name-mangling: + .. index:: pair: name; mangling pair: private; names |
