我正在为Python编写一个C扩展,它包装了一个C库。这个C库有几个枚举类型,我已经分别为它们编写了相应的IntEnum
,例如:
from enum import IntEnum
# _enum_consts is a C extension creating Python
# constants for the library's enum constants
from . import _enum_consts
class Align(IntEnum):
DEFAULT = _enum_consts.MD_ALIGN_DEFAULT
LEFT = _enum_consts.MD_ALIGN_LEFT
CENTER = _enum_consts.MD_ALIGN_CENTER
RIGHT = _enum_consts.MD_ALIGN_RIGHT
现在,在我包装库的主要功能的C扩展中,一些库函数返回枚举类型,并且我想将它们转换为Python的
IntEnum
值。(我意识到我可以直接返回整数,并且它们将成功地与IntEnum
进行比较,但这有点失去了用途。)问题是,我该如何创建要返回的
IntEnum
值?我只能找到将C中的枚举常量转换为Python常量的示例,并使用PyModule_AddIntConstant()
(这正是_enum_consts
扩展模块所做的)。