summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2022-09-29 23:25:29 (GMT)
committerGitHub <noreply@github.com>2022-09-29 23:25:29 (GMT)
commit0688f110a660999828a544bfb7cef263cdd41d62 (patch)
treeb6cfd0441289ec7316631305eea87053b6106aa6
parentb7b261a8f353384784e57f1e72340789a0c1aaa2 (diff)
downloadcpython-0688f110a660999828a544bfb7cef263cdd41d62.zip
cpython-0688f110a660999828a544bfb7cef263cdd41d62.tar.gz
cpython-0688f110a660999828a544bfb7cef263cdd41d62.tar.bz2
gh-96397: Document that attributes need not be identifiers (GH-96454)
Co-authored-by: C.A.M. Gerlach <CAM.Gerlach@Gerlach.CAM> (cherry picked from commit 9a11ed8e50492d327e4de0a8f3a473e788b14a6f) Co-authored-by: Jeff Allen <ja.py@farowl.co.uk>
-rw-r--r--Doc/glossary.rst11
-rw-r--r--Doc/library/functions.rst8
2 files changed, 17 insertions, 2 deletions
diff --git a/Doc/glossary.rst b/Doc/glossary.rst
index 24daf19..aa9768f 100644
--- a/Doc/glossary.rst
+++ b/Doc/glossary.rst
@@ -136,10 +136,17 @@ Glossary
:exc:`StopAsyncIteration` exception. Introduced by :pep:`492`.
attribute
- A value associated with an object which is referenced by name using
- dotted expressions. For example, if an object *o* has an attribute
+ A value associated with an object which is usually referenced by name
+ using dotted expressions.
+ For example, if an object *o* has an attribute
*a* it would be referenced as *o.a*.
+ It is possible to give an object an attribute whose name is not an
+ identifier as defined by :ref:`identifiers`, for example using
+ :func:`setattr`, if the object allows it.
+ Such an attribute will not be accessible using a dotted expression,
+ and would instead need to be retrieved with :func:`getattr`.
+
awaitable
An object that can be used in an :keyword:`await` expression. Can be
a :term:`coroutine` or an object with an :meth:`__await__` method.
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index e4c40cf..d84977f 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -392,6 +392,7 @@ are always available. They are listed here in alphabetical order.
string. The string must be the name of one of the object's attributes. The
function deletes the named attribute, provided the object allows it. For
example, ``delattr(x, 'foobar')`` is equivalent to ``del x.foobar``.
+ *name* need not be a Python identifier (see :func:`setattr`).
.. _func-dict:
@@ -724,6 +725,7 @@ are always available. They are listed here in alphabetical order.
value of that attribute. For example, ``getattr(x, 'foobar')`` is equivalent to
``x.foobar``. If the named attribute does not exist, *default* is returned if
provided, otherwise :exc:`AttributeError` is raised.
+ *name* need not be a Python identifier (see :func:`setattr`).
.. note::
@@ -1577,6 +1579,12 @@ 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``.
+ *name* need not be a Python identifier as defined in :ref:`identifiers`
+ unless the object chooses to enforce that, for example in a custom
+ :meth:`~object.__getattribute__` or via :attr:`~object.__slots__`.
+ An attribute whose name is not an identifier will not be accessible using
+ the dot notation, but is accessible through :func:`getattr` etc..
+
.. note::
Since :ref:`private name mangling <private-name-mangling>` happens at