wie greife ich mit Python auf die c-bibliotheken zu ?

Martin v. Löwis loewis at informatik.hu-berlin.de
Mon Sep 2 12:57:13 CEST 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