C++ ObjectWrapper für Python
So wirklich hübsch ist das aber alles nicht. `PyArg_Parse()` zu benutzen, um den Typ zu überprüfen, ist ja einfach nur Missbrauch. Dafür gibt es `PyObject_TypeCheck()`, außerdem bringt da numpy `PyArray_Check()`mit. Davon abgesehen geben die ganzen PyArg*-Funktionen geliehene Referenzen bei Python-Objekten zurück, die darf man also nicht `Py_DECREF`en.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Mag sein, dass das nicht ideal ist, aber es tut erstmal. Ich benutze 'PyArg_Parse()' nicht um den Typ zu ueberpruefen, oder? Vielleicht brauche ich es gar nicht, weil pValue ja schon ein numpy-Array ist. Eigentlich ein guter Punkt...Trundle hat geschrieben:So wirklich hübsch ist das aber alles nicht. `PyArg_Parse()` zu benutzen, um den Typ zu überprüfen, ist ja einfach nur Missbrauch. Dafür gibt es `PyObject_TypeCheck()`, außerdem bringt da numpy `PyArray_Check()`mit. Davon abgesehen geben die ganzen PyArg*-Funktionen geliehene Referenzen bei Python-Objekten zurück, die darf man also nicht `Py_DECREF`en.
Die Sache mit dem Py_DECREF und Py_XDECREF, geliehenen Referenzen etc. Habe ich noch nicht durchschaut. Wie gesagt, ich habe mich da moeglichst an die Vorlagen von doc.python.org gehalten. Da stand, wenn man sich nicht sicher ist soll man Py_XDECREF nehmen und ich glaube das habe ich ueberall genommen (anscheind nicht ). Mir ist die Funktion halt noch nicht so klar.
In der Dokumentation steht: "It does remain a convenient way to decompose other tuples, however, and may continue to be used for that purpose." Es wird hier aber kein Tupel entpackt, sondern überprüft, ob ein Python-Objekt einen bestimmten Typ hat, und dafür ist es IMHO die falsche Funktion.
"Der Dumme erwartet viel. Der Denkende sagt wenig." ("Herr Keuner" -- Bertolt Brecht)
Ueberprueft wird da eigentlich nichts, weil mit dem Rueckgabewert gar nichts gemacht wird. Ich habe das nur kopiert und nachtraeglich nicht angepasst. Urspruenglich wurde in Zeile 25 ein beliebiges PyObject zurueck gegeben und mit Zeile 29 wurde das PyObject dann in C++-Variablen geschrieben/zerlegt.
Wahrscheinlich brauche ich die Zeile 29 nicht mehr, weil ich ja weiss, dass ich nur ein numpy-Array zurueckgebe. Sogesehen koennte ich auch nur darauf testen und irgendwelche Fehlerbehandlungen (die es bisher ja noch gar nicht gibt) einbauen.
Wahrscheinlich brauche ich die Zeile 29 nicht mehr, weil ich ja weiss, dass ich nur ein numpy-Array zurueckgebe. Sogesehen koennte ich auch nur darauf testen und irgendwelche Fehlerbehandlungen (die es bisher ja noch gar nicht gibt) einbauen.
Ich habe das Programm mal abgeaendert. Die Zeile mit PyArg_Parse brauchte man tatsaechlich nicht und Py_XDECREF war auch falsch (ich weiss aber nicht warum ). Egal, nu tut's.
Nochmal vielen Dank fuer die Hilfe.
Nochmal vielen Dank fuer die Hilfe.