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>
This commit is contained in:
Ken Jin 2021-02-03 05:06:57 +08:00 committed by GitHub
parent bb739ec922
commit 2edaf6a4fb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 0 deletions

View file

@ -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])

View file

@ -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