用于类型提示的对象¶
提供了各种用于类型提示的内置类型。目前,存在两种类型 – GenericAlias 和 Union。只有 GenericAlias
对 C 语言公开。
-
PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)¶
- 自 3.9 版本以来成为 稳定 ABI 的一部分。
创建一个 GenericAlias 对象。等同于调用 Python 类
types.GenericAlias
。origin 和 args 参数分别设置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 版本中新增。