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