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__ des GenericAlias-Objekts. origin sollte ein PyTypeObject* sein, und args kann ein PyTupleObject* oder ein beliebiger PyObject* 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__ des GenericAlias-Objekts wird verzögert aus __args__ konstruiert. Im Fehlerfall wird eine Ausnahme ausgelöst und NULL zurü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. Entspricht types.GenericAlias in Python.

Hinzugefügt in Version 3.9.