如何使用ctypes在python中表示圆形struct

链表可以用下面的c语言表示

typedef struct LinkedList LinkedList;
typedef struct Node Node;

struct Node
{
    int value;
    Node* next;
};


struct LinkedList
{
    Node* start;
    int length;
};

如何使用ctypes在python中表示相同的struct.

from ctypes import *


class Node(Structure):
    _fields_ = [
        ("value", c_int),
        ("next", pointer(Node))
    ]

但上面给出了以下错误

NameError: name 'Node' is not defined

推荐答案

你应该阅读ctypes的文档,在那里你会发现:

>>> from ctypes import *
>>> class cell(Structure):
...     pass
...
>>> cell._fields_ = [("name", c_char_p),
...                  ("next", POINTER(cell))]
>>>

还有别的吗


要在方法中引用class,可以执行以下操作:

# Don't do:
class Node:
    Node
# But:
class Node:
    def __init__(self):
        type(self)

当您想从类本身内部为类使用类型提示时,必须执行以下操作:

from __future__ import annotations

Python相关问答推荐

提取两行之间的标题的常规表达

我在使用fill_between()将最大和最小带应用到我的图表中时遇到问题

由于NEP 50,向uint 8添加-256的代码是否会在numpy 2中失败?

连接两个具有不同标题的收件箱

将整组数组拆分为最小值与最大值之和的子数组

抓取rotowire MLB球员新闻并使用Python形成表格

将输入管道传输到正在运行的Python脚本中

如果值不存在,列表理解返回列表

管道冻结和管道卸载

如何从在虚拟Python环境中运行的脚本中运行需要宿主Python环境的Shell脚本?

Streamlit应用程序中的Plotly条形图中未正确显示Y轴刻度

在Python中,从给定范围内的数组中提取索引组列表的更有效方法

如何保持服务器发送的事件连接活动?

旋转多边形而不改变内部空间关系

处理具有多个独立头的CSV文件

python中csv. Dictreader. fieldname的类型是什么?'

提高算法效率的策略?

有没有办法在不先将文件写入内存的情况下做到这一点?

有没有办法让Re.Sub报告它所做的每一次替换?

在pandas中,如何在由两列加上一个值列组成的枢轴期间或之后可靠地设置多级列的索引顺序,