我在cython头文件enum
中定义了api.pxd
:
ctypedef enum InstructionType:
default = 0
end_if = 1
end_loop = 2
backward_jump_here = 4
我也检查过将ctypedef
转为cdef
是否有效(但事实并非如此)。
我希望在__cinit__
方法的某个类中使用此枚举中的值:
from api cimport Instruction, CLinVM, InstructionType
# (...) some other classes
cdef class EndIf(Noop):
def __cinit__(self):
self.type = InstructionType.end_if
我收到编译错误:
self.type = InstructionType.end_if
^
------------------------------------------------------------
/home/(...)/instructions.pyx:149:35: 'InstructionType' is not a constant,
以这种方式定义和使用枚举的任何方式?
答案 0 :(得分:2)
您不能通过它们所属的类型名来访问枚举常量,既不能在C中,也不能在C ++中,也不能在Cython中访问。你需要为它创建一个包装器.pxd 。