如何确定PyObject是否为numpy PyArrayObject

问题描述

我是Python C-API的新手。

目前,我是通过

从嵌入式python模块获取对象的
PyObject* a = (PyObject*) PyObject_GetAttrString(pModule,"a");
std::cout << "a as long is " << PyLong_AsLong(a) << std::endl;

我通过

访问numpy对象
PyArrayObject* array = (PyArrayObject*) PyObject_GetAttrString(pModule,"A");

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

解决方法

使用PyArray_CheckPyArray_CheckExact。如果子类还可以,请使用PyArray_Check;如果您需要类型完全为PyArray_CheckExact的对象,请使用numpy.ndarray