aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKen Jin <28750310+Fidget-Spinner@users.noreply.github.com>2021-02-03 05:06:57 +0800
committerGitHub <noreply@github.com>2021-02-02 13:06:57 -0800
commit2edaf6a4fb7e20324dde1423232f07211347f092 (patch)
tree90d57217283933a1ff5bda10f1dab329c4383745
parentbpo-43108: Fix a reference leak in the curses module (GH-24420) (diff)
downloadcpython-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.rst14
-rw-r--r--Doc/reference/expressions.rst2
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