Extension in C++, neue Instanz in Methode anlegen?

13/07/2008 - 19:55 von Torsten Mohr | Report spam
Hallo,

ich habe eine Bibliothek in C++ für die ich momentan die Python-Anbindung
schreibe. Ich habe einen neuen Typ in Python angelegt und ihm als
Parameter einen Pointer auf die C++-Objekte gegeben.

Es funktioniert soweit alles wie erwartet, ein Problem habe ich allerdings:

In __init__ (bzw. in:

(initproc)ri_init, /* tp_init */

Ich kann darin eine neue Instanz anlegen, einfach nach Beschreibung /
Beispiel.


Aber wie kann ich in einer normalen Methode ein neues Obkekt anlegen
und dieses als Ergebnis zurückgeben?

Also etwa:

import meins

a = meins.Meins()

b = a.aehnlicheKopie()


In __init__ bzw. tp_init habe ich folgende Parameter:

static int meins_init(PyObject* self, PyObject* args, PyObject* kwds)

Da ist self schon angelegt. Außerdem wird vorher ja auch tp_new()
mit diversen Parametern aufgerufen die ich nicht habe.


Hat jemand einen Tipp wie man in einer Methode eine neue Instanz anlegen
kann?


Danke für Tipps,
Torsten.
 

Lesen sie die antworten

#1 Stefan Behnel
14/07/2008 - 21:42 | Warnen spam
Torsten Mohr schrieb:
ich habe eine Bibliothek in C++ für die ich momentan die Python-Anbindung
schreibe. Ich habe einen neuen Typ in Python angelegt und ihm als
Parameter einen Pointer auf die C++-Objekte gegeben.



Schonmal daran gedacht, Cython zu verwenden? Macht das Leben einfacher.

http://cython.org/

Stefan

Ähnliche fragen