La mise en œuvre des méthodes PyMyType_Check avec API Python C?
-
25-09-2019 - |
Question
Tous les types fournis Python disposent d'une méthode de contrôle (à savoir PyList_Check
) qui vous permet de vérifier si un PyObject*
arbitraire est en fait un type spécifique.
Comment puis-je mettre en œuvre pour mes propres types? Je n'ai pas trouvé quelque chose de bon en ligne pour cela, mais il semble comme une chose assez normal de vouloir faire.
Aussi, peut-être que je suis tout simplement terrible à regarder à travers de grands arbres source, mais je ne peux pas pour la vie de me trouver la mise en œuvre de PyList_Check
ou tout c'est des compagnons dans la source Python (2.5).
La solution
En effet, ils sont macros qui utilisent la magie profonde. Epargnez-vous un peu de maux de tête et d'utiliser PyObject_IsInstance()
à la place.
Autres conseils
Si vous souhaitez implémenter votre propre macro, vous pouvez essayer ...
#define PyMyType_Check(op) \
PyObject_TypeCheck(op, &PyMyType_Type)