提供了數個用於型別提示的內建型別。目前有兩種 -- GenericAlias 和 Union。只有 GenericAlias
有公開 (expose) 給 C。
建立一個 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 版被加入.
Py_GenericAlias()
所回傳該物件的 C 型別。等價於 Python 中的 types.GenericAlias
。
在 3.9 版被加入.