wie greife ich mit Python auf die c-bibliotheken zu ?
Martin v. Löwis
loewis at informatik.hu-berlin.de
Mon Sep 2 06:57:13 EDT 2002
Oleg Seifert <misterxx at uni-koblenz.de> writes:
> könnte vielleicht jemand es mir an einem Beispiel zeigen. Ich habe als
> Attachments zwei kleine Anwendungen dazu geschickt.
Du musst einen Typ definieren; nimm als Beispiel Modules/xxmodule.c
aus der Python-Distribution. Dort sollte es dann ungefähr lauten
typedef struct {
PyObject_HEAD
person *_person;
} PyPerson;
Die Methoden der C++-Klasse musst Du alle "wrappen", etwa
extern "C" PyObject*
PyPerson_setname(PyPerson* self, PyObject*args){
char *n;
if(!PyArg_ParseTuple(args, "s:setname", &n))
return NULL;
self->_person->set_name(n);
Py_INCREF(Py_None);
return Py_None;
}
Dann kann man das ganze vielleicht benutzen als
p = person.new() # Annahme: das ganze Modul heisst person, nicht xx
p.set_name("Peter")
Alternativ kannst Du auch set/get als Attribute wrappen, so dass man
dann schreiben kann
p.name = "Peter" # ruft implizit ->set_name()
Ciao,
Martin
More information about the Python-list
mailing list