Ich habe Python in C++ eingebettet und würde gerne wissen, ob es einen Weg gibt, den Typ des boost :: python :: object zu finden, der nach dem Ausführen einer Funktion ein Ergebnis ist eines Python-Moduls. Ich habe meinen Code wie folgt aus:Finde den Typ des Boost-Python-Objekts
boost::python::object module_ = boost::python::import("..libName");
boost::python::object result_ = module_.attr("..functionName")(arg1, arg2,...);
//suppose if the result is int,
int a_ = boost::python::extract<int>(result_);
Aus dem obigen Code-Schnipsel, was ich wissen möchte, ob es Art und Weise ist, bevor das Extrahieren sie die Art des Ergebnisses zu finden. Im obigen Code könnte das result_ ein beliebiger Typ wie list, tuple ... sein.
Wie Sie vorgeschlagen haben, ist es nicht zuverlässig. Extrahieren Sie wird glücklich ganze Zahlen annehmen –
Sergei
Ja. Seit diesem Post habe ich festgestellt, dass 'extract' versucht, automatisch zwischen kompatiblen Typen zu konvertieren. Um sicherzugehen, dass es sich um eine Ganzzahl handelt, verwenden Sie 'PyInt_Check'. – csl