Posso substituir uma função virtual C ++ no Python com o Cython?

Eu tenho uma classe C ++ com um método virtual:

<code>//C++
class A
{

    public:
        A() {};
        virtual int override_me(int a) {return 2*a;};
        int calculate(int a) { return this->override_me(a) ;}

};
</code>

O que eu gostaria de fazer é expor essa classe para Python com o Cython, herdar dessa classe em Python e ter a chamada correta substituída:

<code>#python:
class B(PyA):
   def override_me(self, a):
       return 5*a
b = B()
b.calculate(1)  # should return 5 instead of 2
</code>

Existe uma maneira de fazer isso? Agora estou pensando, também poderia ser ótimo se pudéssemos substituir o método virtual no Cython também (em um arquivo pyx), mas permitir que os usuários façam isso em Python puro é mais importante.

EditarSe isso ajudar, uma solução poderia ser usar o pseudocódigo dado aqui:http://docs.cython.org/src/userguide/pyrex_differences.html#cpdef-functions

Mas há dois problemas então:

Eu não sei como escrever este pseudocódigo em Cythontalvez haja uma abordagem melhor

questionAnswers(2)

yourAnswerToTheQuestion