如何将外部枚举设为Python的“公共”?

7 投票
1 回答
644 浏览
提问于 2025-04-17 13:06

我正在封装一个库,这个库大量使用了枚举类型,因此里面有很多常量标识符。有没有办法让这些常量在Cython中可用(也就是声明为extern),同时又能在Python中使用呢?

我在寻找类似这样的东西

cdef extern from *:
    public enum:
        spam
        foo
        ham

这应该替代

cdef extern from *:
    enum:
        cspam "spam"
        cfoo "foo"
        cham "ham"

spam = cspam
foo = cfoo
ham = cham

注意:我知道可以把extern声明移动到一个.pxd文件中,以避免命名冲突。

谢谢,Niklas

1 个回答

1

我用过 ctypesgen.py,效果还不错,可以用来导出一些类型和枚举。这对于 Python 和 Cython 都应该够用了。

撰写回答