2015-04-19 17 views
12

Tôi chỉ muốn kiểm tra xem PyObject mà tôi có là None hay không. Tôi ngây thơ mong đợi rằng bất kỳ NonePyobject * trả về từ một hàm sẽ là một con trỏ NULL, nhưng điều đó dường như không phải là trường hợp.Kiểm tra xem PyObject có phải là None

Vì vậy: làm cách nào để kiểm tra xem một số điểm PyObject * của tôi có thuộc đối tượng None không?

Tôi biết rằng có các macro như PyInt_Check(PyObject *) xung quanh, nhưng tôi không thể tìm thấy bất kỳ thứ gì như PyNone_Check. Tôi nghĩ rằng tôi chỉ có thể kiểm tra sự bình đẳng giữa PyObjectPy_None của tôi, nhưng hóa ra tôi thậm chí không biết làm thế nào để so sánh bình đẳng với thư viện này.

Trả lời

13

Bạn chỉ có thể so sánh trực tiếp với Py_None sử dụng ==:

if (obj == Py_None) 

Từ docs:

Lưu ý rằng PyTypeObject cho None không tiếp xúc trực tiếp trong Python/C API. Kể từ khi None là một singleton, thử nghiệm đối với bản sắc đối tượng (sử dụng == trong C) là đủ. Không có chức năng PyNone_Check() cho cùng một lý do.

Các vấn đề liên quan