I need a linked list using Cython extension type ie. cdef class
but the Cython compiler complains about Python object.
cdef class Item:
cdef Item* prev
cdef Item* next
Cython error: Pointer base type cannot be a Python object
It would be cdef struct
but any work-around for using cdef class
? (coz I need methods and OOP convention)
CodePudding user response:
cdef class
is like any other Python object and is stored/passed by reference.
This means that it isn't necessary to use pointers here: the internal representation is already stored with pointers. Therefore just use cdef Item
.
As with any other Python object, your Item
will be reference counted and will be automatically reallocated when no other reference exists to it.