用于类型提示的对象

提供了各种用于类型提示的内置类型。目前,存在两种类型 – GenericAliasUnion。只有 GenericAlias 对 C 语言公开。

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)
自 3.9 版本以来成为 稳定 ABI 的一部分。

创建一个 GenericAlias 对象。等同于调用 Python 类 types.GenericAliasoriginargs 参数分别设置 GenericAlias__origin____args__ 属性。origin 应该是一个 PyTypeObject*,而 args 可以是一个 PyTupleObject* 或任何 PyObject*。如果传入的 args 不是一个元组,会自动构建一个 1-元组,并将 __args__ 设置为 (args,)。对参数只进行最小限度的检查,因此即使 origin 不是一个类型,函数也能成功。 GenericAlias__parameters__ 属性是从 __args__ 惰性构建的。如果失败,会引发异常并返回 NULL

下面是一个如何使扩展类型泛化的示例

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

参见

数据模型方法 __class_getitem__()

在 3.9 版本中新增。

PyTypeObject Py_GenericAliasType
自 3.9 版本以来成为 稳定 ABI 的一部分。

Py_GenericAlias() 返回的对象的 C 类型。等同于 Python 中的 types.GenericAlias

在 3.9 版本中新增。