首页 > 解决方案 > cdef 类中的超级构造函数

问题描述

我正在使用 cython 包装一个 C 库。我想用 acdef class来包装一个简单的结构。该结构确实需要一些参数才能正确初始化。我将相应的代码放入__cinit__方法中,如下所示:

cdef class Func:
    cdef library.Func* func

def __cinit__(self, int value):
    library.init_func(&self.func, value)

在 python 代码中,我可以通过f = Func(17). 然后代码处理初始化就好了。我的问题如下:假设我想Func在 python ( class MyFunc(Func): ...) 中扩展类。如何将构造函数添加到 to MyFunc

我想编写一个带有其他参数的构造函数,该构造函数使用 __cinit__(self, int value)从构造函数参数派生的值进行调用。但似乎不可能(可能有充分的理由)__cinit__从 python 代码中调用。

有没有办法在子类中包含构造函数,或者我应该在函数和委托方法/属性周围创建一个包装器?

标签: constructorcythonsubclass

解决方案


推荐阅读