# 型別提示物件

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