型別提示物件
************

提供了數個用於型別提示的內建型別。目前有兩種 -- 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 版新加入.
