GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Context Variables Objects
  • Curses C API
  • Report a bug
  • Improve this page
  • Show source
  • index
  • modules
  • Python
  • 3.15.2 documentation
  • Python/C API reference manual
  • Concrete Objects Layer
  • Objects for Type Hinting

This view

  • Original page
  • New address

GeezerVison is showing docs.python.org — Objects for Type Hinting

Objects for Type Hinting¶

Various built-in types for type hinting are provided. Currently, two types exist – GenericAlias and Union. Only GenericAlias is exposed to C.

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)¶
Part of the Stable ABI since version 3.9.

Create a GenericAlias object. Equivalent to calling the Python class types.GenericAlias. The origin and args arguments set the GenericAlias‘s __origin__ and __args__ attributes respectively. origin should be a PyTypeObject*, and args can be a PyTupleObject* or any PyObject*. If args passed is not a tuple, a 1-tuple is automatically constructed and __args__ is set to (args,). Minimal checking is done for the arguments, so the function will succeed even if origin is not a type. The GenericAlias‘s __parameters__ attribute is constructed lazily from __args__. On failure, an exception is raised and NULL is returned.

Here’s an example of how to make an extension type generic:

...
static PyMethodDef my_obj_methods[] = {
    // Other methods.
    ...
    {"__class_getitem__", Py_GenericAlias, METH_O|METH_CLASS, "my_obj is generic over its contained type"}
    ...
}

See also

The data model method __class_getitem__().

Added in version 3.9.

PyTypeObject Py_GenericAliasType¶
Part of the Stable ABI since version 3.9.

The C type of the object returned by Py_GenericAlias(). Equivalent to types.GenericAlias in Python.

Added in version 3.9.

© Copyright 2001 Python Software Foundation.
This page is licensed under the Python Software Foundation License Version 2.
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
See History and License for more information.

The Python Software Foundation is a non-profit corporation. Please donate.

Last updated on Nov 12, 2026 (08:53 UTC). Found a bug?
Created using Sphinx 9.1.1.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.