From 7ce138fa9bc69fd4dba4634835fa945089de95eb Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Wed, 25 Sep 2024 16:27:10 -0700 Subject: [PATCH] [3.12] gh-123242: Note that type.__annotations__ may not exist (GH-124557) (#124562) Closes GH-123242. The real criterion is that the attribute does not exist on heap types, but I don't think we should discuss heap vs. static types in the language reference. (cherry picked from commit 99b23c64de301c9e77add6b0d8e60118ef807840) --- Doc/reference/datamodel.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index ae2b8fcaf87939..5dcdb7bd8dd414 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -1009,6 +1009,14 @@ Special attributes collected during class body execution. For best practices on working with :attr:`!__annotations__`, please see :ref:`annotations-howto`. + .. caution:: + + Accessing the :attr:`!__annotations__` attribute of a class + object directly may yield incorrect results in the presence of + metaclasses. In addition, the attribute may not exist for + some classes. Use :func:`inspect.get_annotations` to + retrieve class annotations safely. + * - .. attribute:: type.__type_params__ - A :class:`tuple` containing the :ref:`type parameters ` of a :ref:`generic class `.