2
В Cython можно передать экземпляр класса Cython cdef в качестве аргумента методу cdef. Например, если у нас есть класс ниже:Передача объекта класса cdef в качестве аргумента в метод cdef
# foo.pyx
cdef class Foo:
def __cinit__(self, double arg):
self.arg = arg
def get_arg_sqr(self):
return self.arg * 2
# bar.pyx
from foo cimport Foo
cdef exec_foo(Foo foo):
cdef double sqr = foo.get_arg_sqr()
Как вы достигаете чего-то подобного?
# test.py
from foo import Foo
import bar
Foo f = Foo(2.33)
exec_foo(f)
Я добавил 'cimport foo' в' bar.pyx' благодарность за напоминание. – Bitmap
Это было - отредактировано. Thx – Bitmap
Извините, я неверно разобрал ваш вопрос. IIRC, идея здесь состоит в том, чтобы отделить логику и реализацию, подобно заголовочным файлам в c. Вы можете создавать классы «интерфейса» в файле 'pxd', а затем использовать' cimport' для записи объявлений переменных, таких как 'cdef Foo f'. Фактические реализации затем находятся в файле '.pyx'. – cel