用於型別提示的物件

提供了各種用於型別提示的內建型別。目前,存在兩種型別 – 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 版本中新增。