[英]How to access dynamic C++ array variable, belonging to an object, with Python?
我有一个带有动态数组变量的C ++类。 这非常简单,目前仅用于测试目的:
class testClass {
public:
int *x;
testClass();
~testClass();
};
当前通过构造函数,使用一些值来初始化变量x
。 我正在尝试通过Cython为C ++类编写一个可以访问x
的python包装器代码。 我怎样才能做到这一点?
最好的办法是能够访问变量而不复制大量数据,因为x
可能很大。 我可以以numpy数组形式访问它吗?
例如,它表现为numpy数组,例如只能读取? 我希望能够在python的其他计算中使用x
中的数据,因此首选numpy数组。
我想我可以创建一个GET
方法来初始化一个numpy数组,将其传递给GET
方法,并用循环将x
的数据填充到其中,但这会复制数据,而且看起来不是很优雅。 希望有更好的解决方案。
我尝试过使用静态数组,并找到了一种行之有效的解决方案。 如果x
是静态的,则可以在.pyx
文件中执行以下操作:
cdef extern from "testClass.h":
cdef cppclass testClass:
testClass()
int x[5]
cdef class pyTestClass:
cdef testClass *thisptr
def __cinit__(self):
self.thisptr = new testClass()
def __dealloc__(self):
del self.thisptr
property x:
def __get__(self):
return self.thisptr.x
如果我在Python中访问x
,我将获得一个Python列表,并返回值。
如何使用Python访问属于对象的动态C ++数组变量?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.