Python 将结构*从一个Cython类传递到另一个Cython类

Python 将结构*从一个Cython类传递到另一个Cython类,python,cython,Python,Cython,我试图将结构指针从一个Cython类传递到另一个Cython类。下面是一些示例代码: cdef struct MyStruct: int a int b cdef class MyClass: cdef MyStruct* s def __init__(self): self.s = <MyStruct*> malloc(sizeof(MyStruct)) self.s.a = 1 self.s.b =

我试图将结构指针从一个Cython类传递到另一个Cython类。下面是一些示例代码:

cdef struct MyStruct:
    int a
    int b

cdef class MyClass:
    cdef MyStruct* s
    def __init__(self):
        self.s = <MyStruct*> malloc(sizeof(MyStruct))
        self.s.a = 1
        self.s.b = 2

    cdef MyStruct* get_my_struct(self):
        return self.s

cdef class PrinterClass:
    cdef object m
    def __init__(self):
        self.m = MyClass()

    cpdef print_struct(self):
        cdef MyStruct* my_struct
        my_struct = self.m.get_my_struct()
        print(my_struct.a)
cdef struct MyStruct:
INTA
int b
cdef类MyClass:
cdef MyStruct*s
定义初始化(自):
self.s=malloc(sizeof(MyStruct))
self.s.a=1
self.s.b=2
cdef MyStruct*获取我的结构(self):
回归自我
cdef类打印机类:
cdef对象m
定义初始化(自):
self.m=MyClass()
cpdef打印结构(自身):
cdef MyStruct*我的结构
my_struct=self.m.获取my_struct()
打印(我的结构a)
当我试图编译这个类时,在
my\u struct=self.m.get\u my\u struct()
行中出现以下两个错误:

无法将Python对象转换为“MyStruct”*

存储临时Python引用的不安全C派生


为什么Cython要在这里进行转换?它不能按原样传递指针吗?

PrinterClass
中,用
cdef MyClass m
替换
cdef对象m
,或者显式地将
self.m
转换为
MyClass
my_struct=(self.m)。获取my_struct()
。(此外,应在
MyClass
中添加一个
\uuuuu dealloc\uuuuuu

我想区别在于
object
是python对象(本质上是
dict
),而
cdefclass
是另一种类(本质上是
struct
),请参见

期待其他专家的进一步披露:)