型別提示物件

提供了數個用於型別提示的內建型別。目前有兩種 -- GenericAliasUnion。只有 GenericAlias 有公開 (expose) 給 C。

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)
穩定 ABI 的一部分 自 3.9 版本開始.

建立一個 GenericAlias 物件,等同於呼叫 Python 的 types.GenericAlias class。 originargs 引數分別設定了 GenericAlias__origin____args__ 屬性。origin 應該要是個 PyTypeObject*args 可以是個 PyTupleObject* 或任意 PyObject*。如果傳入的 args 不是個 tuple(元組),則會自動建立一個長度為 1 的 tuple 且 __args__ 會被設為 (args,)。只會進行最少的引數檢查,所以即便 origin 不是個型別,函式也會不會失敗。 GenericAlias__parameters__ 屬性會自 __args__ 惰性地建立 (constructed lazily)。當失敗時,會引發一個例外並回傳 NULL

以下是個讓一個擴充型別泛用化 (generic) 的例子:

...
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
穩定 ABI 的一部分 自 3.9 版本開始.

Py_GenericAlias() 所回傳該物件的 C 型別。等價於 Python 中的 types.GenericAlias

在 3.9 版被加入.