2015-04-19 16 views
12

Vorrei solo verificare se uno PyObject che ho è None. Mi aspettavo ingenuamente che qualsiasi NonePyobject * restituito da una funzione sarebbe un puntatore NULL, ma non sembra essere il caso.Controlla se PyObject è None

Quindi: come si verifica se un mio PyObject * punta a un oggetto None?

So che ci sono macro come PyInt_Check(PyObject *) in giro, ma non ho trovato nulla come PyNone_Check. Pensavo di poter controllare l'uguaglianza tra il mio PyObject e Py_None, ma risulta che non so nemmeno come fare confronti di uguaglianza con questa libreria.

risposta

13

Si può solo confrontare direttamente con Py_None utilizzando ==:

if (obj == Py_None) 

Dal docs:

Nota che la PyTypeObject per None non è esposto direttamente in Python/C API . Poiché None è un singleton, è sufficiente eseguire il test per l'identità dell'oggetto (utilizzando == in C). Non esiste la funzione PyNone_Check() per per lo stesso motivo.