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