【发布时间】:2011-06-03 08:04:40
【问题描述】:
我正在使用 ctypes 访问一个用 C 编写的共享库。共享库的 C 源包含一个类似
的枚举enum {
invalid = 0,
type1 = 1,
type2 = 2
} type_enum;
在 Python 方面,我打算只为各种枚举值定义整数常量,例如:
INVALID = 0
TYPE1 = 1
TYPE2 = 2
然后在调用 C 函数的 Python 代码中使用这些数字“常量”。这似乎工作正常,但是我强烈更喜欢直接从共享库中获取枚举的数值(自省?);但是使用例如nm 在共享库上它似乎不包含任何符号“无效”、“类型 1”或“类型 2”。所以我的问题是:
- 是否可以从共享库中的枚举定义中提取数值 - 或者编译器完成后整个枚举概念是否“掉在地上”?
- 如果枚举值存在于共享库中 - 我如何从 Python/ctypes 访问它们?
【问题讨论】:
-
查看 this question 了解自动解析标头甚至创建 Python 等效枚举的方法。