diff options
author | 2021-02-03 05:06:57 +0800 | |
---|---|---|
committer | 2021-02-02 13:06:57 -0800 | |
commit | 2edaf6a4fb7e20324dde1423232f07211347f092 (patch) | |
tree | 90d57217283933a1ff5bda10f1dab329c4383745 | |
parent | bpo-43108: Fix a reference leak in the curses module (GH-24420) (diff) | |
download | cpython-2edaf6a4fb7e20324dde1423232f07211347f092.tar.gz cpython-2edaf6a4fb7e20324dde1423232f07211347f092.tar.bz2 cpython-2edaf6a4fb7e20324dde1423232f07211347f092.zip |
bpo-8264: Document hasattr and getattr behavior for private attributes (GH-23513)
Clarify ``getattr`` and ``setattr`` requirements for accessing name-mangled attributes
Co-Authored-By: Catalin Iacob <iacobcatalin@gmail.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 f84353ce39..55dd3f03f9 100644 --- a/Doc/library/functions.rst +++ b/Doc/library/functions.rst @@ -693,6 +693,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() @@ -1512,6 +1519,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 8ac6264448..c8c9b4683e 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 |