Czy mogę zastąpić funkcję wirtualną C ++ w Pythonie Cythonem?

Mam klasę C ++ z wirtualną metodą:

<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>

To, co chciałbym zrobić, to udostępnić tę klasę Pythonowi z Cythonem, odziedziczyć z tej klasy w Pythonie i mieć poprawne przesłonięte:

<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>

Czy istnieje sposób, aby to zrobić? Teraz myślę, że może być również wspaniale, jeśli możemy zastąpić metodę wirtualną w Cythonie (w pliku pyx), ale ważniejsze jest zezwolenie użytkownikom na to w czystym pythonie.

Edytować: Jeśli to pomoże, rozwiązaniem może być użycie podanego tutaj pseudokodu:http://docs.cython.org/src/userguide/pyrex_differences.html#cpdef-functions

Są jednak dwa problemy:

Nie wiem, jak napisać ten pseudokod w Cythoniemoże jest lepsze podejście

questionAnswers(2)

yourAnswerToTheQuestion