類(lèi)型注解對象?
提供幾種用于類(lèi)型提示的內置類(lèi)型。 目前存在兩種類(lèi)型 -- GenericAlias 和 Union。 只有 GenericAlias
會(huì )向 C 開(kāi)放。
-
PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)?
- Part of the Stable ABI since version 3.9.
創(chuàng )建一個(gè) GenericAlias 對象。相當于調用 Python 類(lèi)
types.GenericAlias
。參數 origin 和 args 分別設置GenericAlias
's__origin__
屬性和__args__
屬性。 origin 應該是 PyTypeObject* 類(lèi)型, args 可以是 PyTupleObject* 類(lèi)型或者任意PyObject*
類(lèi)型。如果傳遞的 args 不是一個(gè)元組,則自動(dòng)構建一個(gè) 1 元元組,并將__args__
設置為(args,)
。對參數進(jìn)行了最小限度的檢查,因此即使 origin 不是類(lèi)型,函數也會(huì )成功。GenericAlias
的__parameters__
屬性是通過(guò)__args__
懶加載的。如果失敗,則觸發(fā)異常并返回NULL
。下面是一個(gè)如何創(chuàng )建一個(gè)擴展類(lèi)型泛型的例子:
... static PyMethodDef my_obj_methods[] = { // Other methods. ... {"__class_getitem__", Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} ... }
參見(jiàn)
數據模型的方法
__class_getitem__()
。3.9 新版功能.
-
PyTypeObject Py_GenericAliasType?
- Part of the Stable ABI since version 3.9.
由
Py_GenericAlias()
所返回的對象的 C 類(lèi)型。等價(jià)于 Python 中的types.GenericAlias
。3.9 新版功能.