Kann ich eine virtuelle C ++ - Funktion in Python mit Cython überschreiben?

Ich habe eine C ++ - Klasse mit einer virtuellen Methode:

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

Was ich tun möchte, ist, diese Klasse mit Cython für Python verfügbar zu machen, von dieser Klasse in Python zu erben und die richtige überschreiben zu lassen:

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

Gibt es eine Möglichkeit, dies zu tun? Jetzt denke ich, es könnte auch großartig sein, wenn wir die virtuelle Methode in Cython (in einer Pyx-Datei) überschreiben könnten, aber es ist wichtiger, den Benutzern dies in reinem Python zu ermöglichen.

Bearbeiten: Wenn dies hilft, könnte eine Lösung darin bestehen, den hier angegebenen Pseudocode zu verwenden:http://docs.cython.org/src/userguide/pyrex_differences.html#cpdef-functions

Dann gibt es aber zwei Probleme:

Ich weiß nicht, wie ich diesen Pseudocode in Cython schreiben sollVielleicht gibt es einen besseren Ansatz

Antworten auf die Frage(2)

Ihre Antwort auf die Frage