[Python-de] Eine Klassen in Python/C instanzieren

Gerhard Haering gh at ghaering.de
Fre Jul 8 11:12:36 CEST 2005


On Fri, Jul 08, 2005 at 10:27:48AM +0200, Julian Rath wrote:
> hallo, ich habe eine klasse mit der C/Python Api gschrieben, das lauft
> auch schon, so aber jetzt würde ich gerne diese in einer C Funktion
> instanzieren, mir then self Pointer holen und zurückgeben.
> Wie kann ich das machen?

Ich such mal ein Beispiel aus den pysqlite2-Sourcen raus:

    if (factory == NULL) {
        factory = (PyObject*)&CursorType;
    }

    cursor = PyObject_CallFunction(factory, "O", self);

CursorType ist das Typ-Objekt für eine "New-Style-Class" und ist einfach
wie jedes andere Python-Callable aufrufbar. Hier kriegt der Konstruktor
einen Parameter, in diesem Fall namens "self". Ein Aufruf ohne Parameter
würde einfach so aussehen:

... = PyObject_CallFunction(dein_typ_object, "");

... Aus irgendeinem Grund hab ich damals nicht CallObject genommen, ich
kann mich aber jetzt nicht daran erinnern ;-)

-- Gerhard
-- 
Gerhard Häring - gh at ghaering.de - Python, web & database development
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : http://starship.python.net/pipermail/python-de/attachments/20050708/7500247a/attachment.pgp