Class cython中的类变量和实例变量
我正在阅读cython文档,对Class cython中的类变量和实例变量,class,instance,cython,Class,Instance,Cython,我正在阅读cython文档,对\u c_queue和self感到困惑。以下代码中出现了
\u c_queue
和self感到困惑。以下代码中出现了
。类变量\u c_queue
是否起作用?以下代码来自
_c_queue不是一个类变量,而是一个cdef属性Better:谢谢,这提醒了我,在c语言中,变量可以先声明,然后再初始化。因此
cdef cqueue.Queue*\u c\u Queue
声明并self.\u c\u Queue=cqueue.Queue\u new()
实际分配指针。此外,扩展类型cdefclass
实际上是一个C结构,因此根本不涉及类变量。每个实例都是一个结构,每个self
都指向该结构本身。如果需要在扩展类型的实例之间共享数据,可以将公共数据的指针分配给扩展类型构造函数。希望理解是正确的。
# distutils: sources = c-algorithms/src/queue.c
# distutils: include_dirs = c-algorithms/src/
cimport cqueue
cdef class Queue:
cdef cqueue.Queue* _c_queue
def __cinit__(self):
self._c_queue = cqueue.queue_new()
if self._c_queue is NULL:
raise MemoryError()
def __dealloc__(self):
if self._c_queue is not NULL:
cqueue.queue_free(self._c_queue)