類型注解對象?

提供幾種用于類型提示的內(nèi)置類型。 目前存在兩種類型 -- GenericAliasUnion。 只有 GenericAlias 會向 C 開放。

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)?
Part of the Stable ABI since version 3.9.

創(chuàng)建一個 GenericAlias 對象。相當于調(diào)用 Python 類 types.GenericAlias 。參數(shù) originargs 分別設(shè)置 GenericAlias's __origin__ 屬性和 __args__ 屬性。 origin 應(yīng)該是 PyTypeObject* 類型, args 可以是 PyTupleObject* 類型或者任意 PyObject* 類型。如果傳遞的 args 不是一個元組,則自動構(gòu)建一個 1 元元組,并將 __args__ 設(shè)置為 (args,) 。對參數(shù)進行了最小限度的檢查,因此即使 origin 不是類型,函數(shù)也會成功。GenericAlias__parameters__ 屬性是通過 __args__ 懶加載的。如果失敗,則觸發(fā)異常并返回 NULL

下面是一個如何創(chuàng)建一個擴展類型泛型的例子:

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

參見

數(shù)據(jù)模型的方法 __class_getitem__() 。

3.9 新版功能.

PyTypeObject Py_GenericAliasType?
Part of the Stable ABI since version 3.9.

Py_GenericAlias() 所返回的對象的 C 類型。等價于 Python 中的 types.GenericAlias 。

3.9 新版功能.