gpt4 book ai didi

python - 如何在 cython 中访问枚举?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:42:31 24 4
gpt4 key购买 nike

<分区>

我有一个很大的 c++ 代码,我将其包装在 cython 中以从 python 调用。我不确定在 cython 中应该如何调用枚举中的内容。这是我已经尝试过的。但这还不完整。帮助!

演示示例

class Foo{
public:
Foo1 bar(enum_is type = enum::any) const;
}
enum class enum_is:unsigned int{
any = 0,
one = 1,
two = 2,
};

abc.pxd

cdef extern from "headerfile.hpp":
cdef cpp class enum_is:
pass

cdef extern from "headerfile.hpp" namespace "enum_is":
cdef enum_is any
cdef enum_is one
cdef enum_is two

abc.pyx

cdef class Pyenum_is:
cdef enum_is thisobj
def __cinit__(self,unsigned int val):
self.pin_isthisobj = <pin_is> val
def get_pin_is_type(self)
cdef r={<unsigned int> any:"any",
<unsigned int> one:"one",
<unsigned int> two:"two"
}
return r[<unsigned int>self.thisobj]

假设我正确包装了枚举类,我需要有关如何在 python 中实际使用枚举的函数的帮助

cdef class PyFoo1
cdef Foo1 Foo1thisobj
cdef Foo1* Foo1thisptr

cdef class PyFoo
cdef Foo Foothisobj
cdef Foo* Foothisptr
def bar(self,#pass enum_is object here):
cdef Foo tempv = self.thisobj.bar(#pass enum here)
abc = PyFoo()
abc.Foo1thisobj = tempv
return abc

有人可以帮助我了解如何继续在 cython 中使用这个枚举

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com