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