型別提示物件¶
提供了數個用於型別提示的內建型別。目前有兩種 -- GenericAlias 和 Union。只有 GenericAlias
有公開 (expose) 給 C。
-
PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)¶
- 為 穩定 ABI 的一部分 自 3.9 版本開始.
建立一個 GenericAlias 物件,等同於呼叫 Python 的
types.GenericAlias
class。 origin 和 args 引數分別設定了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 版被加入.