Я работаю над упаковкой библиотеки C с использованием Cython. Я хотел бы использовать 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)
. Затем код прекрасно обрабатывает инициализацию. У меня следующий вопрос: скажем, я хочу расширить класс Func
в python (class MyFunc(Func): ...
). Как добавить конструктор в MyFunc
?
Я хотел бы написать конструктор с другими параметрами, который вызывает
__cinit__(self, int value)
со значением, полученным из параметров конструктора. Но не представляется возможным (вероятно, по уважительной причине) вызвать __cinit__
из кода Python.
Есть ли способ включить конструкторы в подклассы, или я должен создать оболочку для функции и делегировать методы / свойства?