Class cython中的类变量和实例变量

Class cython中的类变量和实例变量,class,instance,cython,Class,Instance,Cython,我正在阅读cython文档,对\u c_queue和self感到困惑。以下代码中出现了

我正在阅读cython文档,对
\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)