Я пишу оболочку Python для класса C и выделяю память с помощью PyMem_Malloc, как описано здесь
cdef class SomeMemory:
cdef double* data
def __cinit__(self, size_t number):
# allocate some memory (uninitialised, may contain arbitrary data)
self.data = <my_data_t*> PyMem_Malloc(number * sizeof(my_data_t))
if not self.data:
raise MemoryError()
Затем я импортирую и использую класс в другом скрипте, используя:
import SomeMemory
sm = SomeMemory(10)
Теперь я хотел бы получить доступ к элементам self.data, но столкнулся с двумя проблемами.
- если я наберу self.data и нажму Enter, ядро ipython выйдет из строя
- если я попытаюсь зациклиться на собственных данных
как:
for p in self.data:
print p
Я получаю сообщение об ошибке, что self.data не является итерируемым.
Как я могу получить доступ к self.data? Нужно ли мне сначала преобразовать элементы в my_data_t?