Как смоделировать структуру, содержащую ссылку на ее определение в python через ctypes?

пытаясь обернуть структуру ссылочного определения, как показано ниже

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 

но есть ли способ моделировать эту структуру в classе python?

Из [Python]: неполные типы :

…. В ctypes мы можем определить class cell и установить атрибут _fields_ позже, после инструкции classа.

Если мы применим это к текущей проблеме, код будет выглядеть как-то вроде:

 from ctypes import Structure, POINTER class Foo(Structure): pass Foo._fields_ = [ ("foo_ptr", POINTER(Foo)), ]