Objekte für Typ-Annotationen¶
Verschiedene eingebaute Typen für Typ-Annotationen werden bereitgestellt. Derzeit gibt es zwei Typen – GenericAlias und Union. Nur GenericAlias wird an C exportiert.
-
PyObject *Py_GenericAlias(PyObject *origin, PyObject *args)¶
- Teil der Stable ABI seit Version 3.9.
Erzeugt ein GenericAlias-Objekt. Entspricht dem Aufruf der Python-Klasse
types.GenericAlias. Die Argumente origin und args setzen die Attribute__origin__und__args__desGenericAlias-Objekts. origin sollte ein PyTypeObject* sein, und args kann ein PyTupleObject* oder ein beliebigerPyObject*sein. Wenn args nicht als Tupel übergeben wird, wird automatisch ein 1-Tupel erstellt und__args__auf(args,)gesetzt. Es werden nur minimale Prüfungen für die Argumente durchgeführt, sodass die Funktion auch dann erfolgreich ist, wenn origin kein Typ ist. Das Attribut__parameters__desGenericAlias-Objekts wird verzögert aus__args__konstruiert. Im Fehlerfall wird eine Ausnahme ausgelöst undNULLzurückgegeben.Hier ist ein Beispiel, wie man einen Erweiterungstyp generisch macht
... static PyMethodDef my_obj_methods[] = { // Other methods. ... {"__class_getitem__", Py_GenericAlias, METH_O|METH_CLASS, "See PEP 585"} ... }
Siehe auch
Die Datenmodell-Methode
__class_getitem__().Hinzugefügt in Version 3.9.
-
PyTypeObject Py_GenericAliasType¶
- Teil der Stable ABI seit Version 3.9.
Der C-Typ des Objekts, das von
Py_GenericAlias()zurückgegeben wird. Entsprichttypes.GenericAliasin Python.Hinzugefügt in Version 3.9.