From 33df56cd757eceb006cdd56ff852b9a5302a8d24 Mon Sep 17 00:00:00 2001 From: Jelle Zijlstra Date: Wed, 25 Sep 2024 16:08:14 -0700 Subject: [PATCH] [3.13] gh-123242: Note that type.__annotations__ may not exist (GH-124557) 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) Co-authored-by: Jelle Zijlstra --- Doc/reference/datamodel.rst | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst index dfc7e8ef056a50..f1d975c7a7a87d 100644 --- a/Doc/reference/datamodel.rst +++ b/Doc/reference/datamodel.rst @@ -1011,6 +1011,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 `.