在C中,允许定义一个结构,该结构将指针嵌入到正在定义的同一结构的对象中。例如,以下node
结构用于列表节点的实现
typedef struct node{
void *val;
struct node *next;
struct node *prev;
} node;
嵌入类型为next
的指针prev
和node*
。
将其天真地转换成Python ctypes.Structure
类会产生:
class NODE(Structure):
_fields_ = [ ("val", c_void_p),
("next", POINTER(NODE)),
("prev", POINTER(NODE)) ]
但是,python不允许在其自己的定义(NODE
)中引用类(在本示例中为NameError: name 'NODE' is not defined
)。
我该如何解决?
PS:我尝试在类定义后 后定义_fields_
属性
class NODE(Structure):
_fields_ = []
NODE._fields_ = [ ("val", c_void_p),
("next", POINTER(NODE)),
("prev", POINTER(NODE)) ]
但这是不允许的,因为在ctypes.Structure基类中,_fields_
被标记为(?)为final
。 (AttributeError: _fields_ is final
)