如何通过ctypes对python中包含对它的定义的结构进行建模?

时间:2018-03-13 13:42:18

标签: python c ctypes

尝试将struct的引用包含在下面

  

foo.c的

typedef struct Foo {
  struct Foo *foo;
} Foo;

如何建模,例如

  

foo.py

class Foo(Structure):
    _fields_ = [('foo', pointer(Foo))]

当然python没有解释,我可以使用c_void_p而不是指针(Foo),并将它的值转换为

F = clib.get_foo()
cast(F.foo, pointer(Foo)) #although i'm not sure if it would work

但是,有没有办法在python类中对该结构进行建模?

1 个答案:

答案 0 :(得分:1)

来自[Python]: Incomplete Types

  

......在ctypes中,我们可以定义cell类,并在类语句之后设置_fields_属性。

如果我们将其应用于当前问题,代码看起来就像:

from ctypes import Structure, POINTER


class Foo(Structure):
    pass

Foo._fields_ = [
    ("foo_ptr", POINTER(Foo)),
]