类型注解对象
************

提供几种用于类型提示的内置类型。 目前存在两种类型 -- GenericAlias 和
Union。 只有 "GenericAlias" 会向 C 开放。

PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)
    * Part of the Stable ABI since version 3.9.*

   Create a GenericAlias object. Equivalent to calling the Python
   class "types.GenericAlias".  The *origin* and *args* arguments set
   the "GenericAlias"'s "__origin__" and "__args__" attributes
   respectively. *origin* should be a "PyTypeObject*", and *args* can
   be a "PyTupleObject*" or any "PyObject*".  If *args* passed is not
   a tuple, a 1-tuple is automatically constructed and "__args__" is
   set to "(args,)". Minimal checking is done for the arguments, so
   the function will succeed even if *origin* is not a type. The
   "GenericAlias"'s "__parameters__" attribute is constructed lazily
   from "__args__".  On failure, an exception is raised and "NULL" is
   returned.

   下面是一个如何创建一个扩展类型泛型的例子:

      ...
      static PyMethodDef my_obj_methods[] = {
          // Other methods.
          ...
          {"__class_getitem__", (PyCFunction)Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"}
          ...
      }

   也參考: 数据模型的方法 "__class_getitem__()" 。

   3.9 版新加入.

PyTypeObject Py_GenericAliasType
    * Part of the Stable ABI since version 3.9.*

   由 "Py_GenericAlias()" 所返回的对象的 C 类型。等价于 Python 中的
   "types.GenericAlias" 。

   3.9 版新加入.
