Metodi di esecuzione PyMyType_Check con Python API C?
-
25-09-2019 - |
Domanda
Tutti i tipi Python fornite hanno un metodo di controllo (cioè, PyList_Check
) che consente di controllare se un PyObject*
arbitraria è in realtà un tipo specifico.
Come faccio a implementare questo per i miei tipi? Non ho trovato nulla di buono online per questo, anche se sembra una cosa abbastanza normale voler fare.
Inoltre, forse sono solo terribile a guardare attraverso i grandi alberi di origine, ma non posso per la vita di me trovare la realizzazione di PyList_Check
o da suoi compagni nella (2.5) sorgente Python.
Soluzione
Questo perché Sono macro che utilizzano la magia profonda. Salva te stesso un po 'di mal di testa e l'uso PyObject_IsInstance()
.
Altri suggerimenti
Se vuoi per implementare il proprio macro, si potrebbe provare ...
#define PyMyType_Check(op) \
PyObject_TypeCheck(op, &PyMyType_Type)