类型提示的对象 — Python 文档

来自菜鸟教程
Python/docs/3.9/c-api/typehints
跳转至:导航、​搜索

类型提示的对象

提供了用于类型提示的各种内置类型。 只有 GenericAlias 暴露给 C。

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

创建一个 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__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"}
    ...
}

也可以看看

数据模型方法__class_getitem__()

3.9 版中的新功能。

PyTypeObject Py_GenericAliasType

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

3.9 版中的新功能。