Yahoooo! Finally, I got the thing to work. Here is how I did it.
/* import the module that holds the base class */ PyObject *base_module = PyImport_ImportModule("module_name"); if (!base_module) return; /* get a pointer to the base class */ PyObject *base_class = PyMapping_GetItemString( PyModule_GetDict(base_module,"BaseClass") ); if (!base_class) return; /* assign it as base class */ cclassType.tp_bases = Py_BuildValue("(O)",BaseClass); I am doing all this before the call to PyType_Ready() -- as Scoot Daniels suggested. Using the python API's SetAttrString() did not work (I suppose for the same reason, why assigning cls.__bases__ does not work in pure python either). I also checked cclassType.tp_base = (PyTypeObject *) base_class; which also works and I am not aware of the difference of these two slots. Anyway, for my simple purposes it works just fine. - harold - -- "Mr Ghandi, what do you think of western civilization?" "Oh, this would be a great idea." -- http://mail.python.org/mailman/listinfo/python-list