如何确定 PyObject 是否是 numpy PyArrayObject

Fab*_*ian 5 python numpy python-c-api

我是 Python C-API 的新手。

目前我通过以下方式从嵌入式 Python 模块获取对象

PyObject* a = (PyObject*) PyObject_GetAttrString(pModule, "a");
std::cout << "a as long is " << PyLong_AsLong(a) << std::endl;
Run Code Online (Sandbox Code Playgroud)

我通过访问 numpy 对象

PyArrayObject* array = (PyArrayObject*) PyObject_GetAttrString(pModule, "A");
Run Code Online (Sandbox Code Playgroud)

如何测试该对象是否真的是 a PyArrayObject?换句话说,如何通过 Python 来做我想做的事情isinstance(a, numpy.ndarray)

War*_*ser 7

使用PyArray_CheckPyArray_CheckExact. PyArray_Check如果子类没问题,或者PyArray_CheckExact您需要类型完全相同的对象,请使用numpy.ndarray