Objects for Type Hinting

Various built-in types for type hinting are provided. Only GenericAlias is exposed to C.

PyObject * Py_GenericAlias ( PyObject *origin , PyObject *args )

创建 GenericAlias object. Equivalent to calling the Python class types.GenericAlias origin and args arguments set the GenericAlias ’s __origin__ and __args__ attributes respectively. origin 应该为 PyTypeObject* ,和 args can be a PyTupleObject* or any PyObject* 。若 args passed is not a tuple, a 1-tuple is automatically constructed and __args__ 被设为 (args,) . Minimal checking is done for the arguments, so the function will succeed even if origin is not a type. GenericAlias ’s __parameters__ attribute is constructed lazily from __args__ . On failure, an exception is raised and NULL 被返回。

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

...
static PyMethodDef my_obj_methods[] = {
    // Other methods.
    ...
    {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"}
    ...
}
									

另请参阅

The data model method __class_getitem__() .

3.9 版新增。

PyTypeObject Py_GenericAliasType

The C type of the object returned by Py_GenericAlias() 。相当于 types.GenericAlias in Python.

3.9 版新增。

上一话题

日期时间对象

下一话题

初始化、定稿和线程

本页