Ausführungs PyMyType_Check Methoden mit Python API C?
-
25-09-2019 - |
Frage
Alle Python-bereitgestellt Typen haben eine Prüfmethode (das heißt, PyList_Check
), die Sie, wenn eine beliebige PyObject*
überprüfen können ist eigentlich eine bestimmte Art.
Wie kann ich das für meine eigenen Typen implementieren? Ich habe nichts Gutes online diese gefunden, obwohl es wie eine ziemlich normale Sache scheint zu wollen, zu tun.
Auch, vielleicht bin ich einfach schrecklich große Quelle Bäume Blick durch, aber ich kann mich nicht für das Leben finden, die Umsetzung von PyList_Check
oder irgendetwas davon Begleiter in der Python (2.5) Quelle.
Lösung
Das ist, weil sie sind Makros , die tief Magie verwenden. Sparen Sie sich ein bisschen Kopfschmerzen und Verwendung PyObject_IsInstance()
statt.
Andere Tipps
Wenn Sie möchten, dass Ihre eigene Makro implementieren, könnte man versuchen ...
#define PyMyType_Check(op) \
PyObject_TypeCheck(op, &PyMyType_Type)