我正在使用cython包装C库。我想使用cdef class
来包装一个简单的结构。该结构确实需要正确初始化一些参数。我将相应的代码放入__cinit__
方法中,如下所示:
cdef class Func:
cdef library.Func* func
def __cinit__(self, int value):
library.init_func(&self.func, value)
在python代码中,我可以通过f = Func(17)
创建一个函数对象。然后,代码可以很好地处理初始化。我的问题如下:假设我想在python(Func
)中扩展class MyFunc(Func): ...
类。如何将构造函数添加到MyFunc
?
我想写一个带有其他参数的构造函数来调用
__cinit__(self, int value)
,其值来自构造函数参数。但是似乎不可能(可能出于充分的理由)从python代码调用__cinit__
。
是否有某种方法可以在子类中包含构造函数,还是应该围绕函数创建一个包装器并委托方法/属性?