Skip to content

Commit

Permalink
bpo-8264: Document hasattr and getattr behavior for private attributes (
Browse files Browse the repository at this point in the history
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 2edaf6a)

Co-authored-by: Ken Jin <28750310+Fidget-Spinner@users.noreply.github.com>
  • Loading branch information
miss-islington and Fidget-Spinner committed May 22, 2021
1 parent a373c80 commit 11b5045
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 0 deletions.
14 changes: 14 additions & 0 deletions Doc/library/functions.rst
Expand Up @@ -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()

Expand Down Expand Up @@ -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])
Expand Down
2 changes: 2 additions & 0 deletions Doc/reference/expressions.rst
Expand Up @@ -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
Expand Down

0 comments on commit 11b5045

Please sign in to comment.