基本上,我在 Python 中封装了一个 C API(使用 CFFI(非常棒))。
我在那个 C API 中有一个枚举:
typedef enum
{
enum1 = value1;
enum2 = value2;
...
} enumSomething;
在 Python 中,我以字符串 : 的形式接收该枚举中的变量名称"enum1"
。我想得到value1
。
使用CFFI
,您可以包装一个枚举并轻松访问其成员(这里是一个示例)。我的问题是我有代表变量名称的字符串,而不是变量本身。
因此,cwrapper.c."enum1"
将不起作用(cwrapper
作为包装模块的名称和包装库时 c
返回的名称)。ffi.dlopen(libname)
我可以制作一个字典,将变量名称作为字符串映射到实际变量,例如:
enum = { "enum1" : cwrapper.c.enum1, "enum2" : cwrapper.c.enum2, ... }
但在这一点上,我最好将枚举重写为 Python 字典。
我知道我也可以使用正则表达式来读取 C 文件,但我认为还有一种更好的方法来处理它,这是我没有想到的。任何想法?