[英]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.