У меня есть класс C++ с виртуальным методом:
//C++
class A
{
public:
A() {};
virtual int override_me(int a) {return 2*a;};
int calculate(int a) { return this->override_me(a) ;}
};
Что я хотел бы сделать, так это предоставить этот класс Python с помощью Cython, наследуя от этот класс в Python и имеет правильное переопределение:
#python:
class B(PyA):
def override_me(self, a):
return 5*a
b = B()
b.calculate(1) # should return 5 instead of 2
Есть ли способ сделать это? Теперь я думаю, было бы также здорово, если бы мы могли переопределить виртуальный метод и в Cython (в файле pyx), но более важно позволить пользователям делать это в чистом python.
Изменить: Если это поможет, решением может быть использование приведенного здесь псевдокода: http://docs.cython.org/src/userguide/pyrex_differences.html#cpdef-functions
Но тогда есть две проблемы: