Implementando métodos pymytype_check com API Python C?
-
25-09-2019 - |
Pergunta
Todos os tipos fornecidos por Python têm um método de verificação (ou seja, PyList_Check
) isso permite que você verifique se um arbitrário PyObject*
é realmente um tipo específico.
Como posso implementar isso para meus próprios tipos? Não encontrei nada de bom online para isso, embora pareça uma coisa bastante normal de querer fazer.
Além disso, talvez eu seja péssimo em olhar através de grandes árvores de origem, mas não posso para a vida de mim encontrar a implementação de PyList_Check
ou qualquer um de seus companheiros na fonte Python (2.5).
Solução
Isso é porque Eles são macros que usam mágica profunda. Salve um pouco de dor de cabeça e use PyObject_IsInstance()
em vez de.
Outras dicas
Se você quiser implementar sua própria macro, você pode tentar ...
#define PyMyType_Check(op) \
PyObject_TypeCheck(op, &PyMyType_Type)