C++ Klassenobjekt in Python ansprechen...

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hallo,

vorab, bitte nicht erschrecken, der Code sieht evtl., komplizierter aus als er ist. Wenn nicht, umso froher bin ich, dass er nicht abschreckt, hab ihn soweit gekürzt wie es nur geht.

Und zwar habe ich ein kleines Problem bei der Ansteuerung von Objekten. Ich habe ein C++ Klassenobjekt erzeugt und wollte mal fragen inwieweit es möglich ist, dieses Objekt in meiner eingebetteten Python_Umgebung anzusprechen.

Code: Alles auswählen

#include <Python/Python.h>

class Kugel {
	public:
		int radius()
		{
			return 800;
		}
};

PyObject* write_something(PyObject* pSelf, PyObject* pArgs)
{
	printf("I am a python-script");
	return Py_None;
}

static PyMethodDef myMethods[] = {
    {"write_something", write_something, METH_NOARGS},
    {NULL, NULL, 0, NULL}
};

int main (int argc, char **argv) {
	
	Kugel k1;
	
	Py_SetProgramName("testclient"); 
	Py_Initialize();
	PySys_SetArgv(argc, argv);	
	
	Py_InitModule("log", myMethods);

	//Ich kann mittels log.write_something meine Funktion ansprechen...
	//Wie kann ich jedoch k1.radius() ansprechen?
	PyRun_SimpleString("import log\n"
						"log.write_something()");
	
	Py_Finalize();
    return 0;
}
Meine Frage steht in Zeile 34. Wie lässt sich mein einfaches C++ Objekt oben ansprechen? Ich wäre soo dankbar über jede Hilfe, danke :)

Bye!
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

hi, hat sowas noch keiner probiert? :lol: *vorsichtig frag*
BlackJack

Ich habe so etwas noch nicht probiert, würde aber vorschlagen das nicht von Hand zu machen sondern Boost::Python, SIP, oder SWIG zu benutzen um die Brücke zu schlagen.
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Ich frag mal eine doch ernstgemeinte Frage, auch wenn du sie fast schon mit "ja" beantwortest hast:

Ist die übernahme von Objekten so viel einfacher?

bye!
BlackJack

Ich nehme mal an ja, weil damit wohl viel "boiler plate"-Code automatisch generiert wird.
DonnerCobra
User
Beiträge: 53
Registriert: Mittwoch 9. April 2008, 19:35

Hi! :)

Das hieße für meinen Beispielcode gäbs keine Lösung? Echt schade :-/
BlackJack

Die Frage verstehe ich nicht? Wenn man z.B. mit SIP Quelltext generieren kann, liesse sich der natürlich auch per Hand schreiben, wenn man dass denn möchte.
Antworten