【发布时间】:2016-09-08 12:40:36
【问题描述】:
基本上,我在 Python 中封装了一个 C API(使用 CFFI(非常棒))。
我在那个 C API 中有一个枚举:
typedef enum
{
enum1 = value1;
enum2 = value2;
...
} enumSomething;
在 Python 中,我以字符串的形式收到该枚举中的变量名称:"enum1"。我想得到value1。
使用CFFI,您可以包装一个枚举并轻松访问其成员(here is an example)。我的问题是我有代表变量名称的字符串,而不是变量本身。
因此,cwrapper.c."enum1" 将不起作用(cwrapper 是包装模块的名称,c 是 ffi.dlopen(libname) 在包装库时返回的名称)。
我可以制作一个字典,将变量名作为字符串映射到真实变量,例如:
enum = { "enum1" : cwrapper.c.enum1, "enum2" : cwrapper.c.enum2, ... }
但此时,我最好将枚举重写为 Python 字典。
我知道我也可以使用正则表达式来读取 C 文件,但我认为还有一种更好的方法来处理它,这是我没有想到的。有什么想法吗?
【问题讨论】:
标签: python c variables enums python-cffi