I think you'd need to write a C++ class that has the methods you want to implement in C++, then wrap that with SWIG, then inherit from that, though multiple inheritance if you also need functions from a base Python class. The PyQt people use SIP I think, instead of SWIG, might be useful to look into that too too.
Adriaan. >>><[EMAIL PROTECTED]> 08/18/05 6:42 pm >>> Nope, it still doesn't work. Anyway, that's not exactly what i want, since i want func2 to be accessible from all instances of Test() Naveen On Thu, 18 Aug 2005, Jeremy Moles wrote: >I honestly don't know the answer to this and I am entirely guessing >but--does it work without using the new module? That is: > >---------------------------------------------------------------- > >import _test > >class Foo: >pass > >foo = Foo() > >foo.bar = _test.func2 > >foo.bar() > >On Thu, 2005-08-18 at 12:09 -0400, [EMAIL PROTECTED] wrote: >>I am having a problem implementing some methods of a python class in C. >>The class is defined in python, but I would like to rewrite some methods >>in c. Here is an example of what I want to do: >> >>file _test.c: >> >>#include <Python.h> >> >>static PyObject >>func2(PyObject *self, PyObject *args) >>{ >> if (self == NULL) { >> PyErr_SetString(PyExc_SystemError, "self is NULL"); >> return NULL; >> } >> >> // Parse arguments >> if (!PyArg_ParseTuple(args, "")) >> { >> return NULL; >> } >> >> Py_INCREF(Py_None); >> return Py_None; >>} >> >>static PyMethodDef TestMethods[] = { >> {"func2", func2, METH_VARARGS, "func2."}, >> {NULL, NULL, 0, NULL} /* Sentinel */ >>}; >> >>PyMODINIT_FUNC >>init_test(void) >>{ >> (void) Py_InitModule("_test", TestMethods); >>} >> >>---------------------------------------------------- >>test.py: >> >>class Test: >> def func1(self): >> print "I am in func 1" >> >>import _test >>import new >>Test.func2 = new.instancemethod(_test.func2, None, Test) >>del(new) >> >>t = Test() >>t.func2() >> >> >>When I run test.py, I get a SystemError exception (which is what I raise >>if self is NULL). I think my confusion lies in the use of PyObject* self >>in the function declaration. Shouldn't this be set to point to the >>instance of class Test that I am calling it from? Am I misunderstanding >>the purpose of PyObject* self? Thanks. >> >>Naveen >> >>--------------------------------------------------------------------- >>Naveen Michaud-Agrawal >>Program in Molecular Biophysics >>Johns Hopkins University >>(410) 614 4435 > -- http://mail.python.org/mailman/listinfo/python-list -- http://mail.python.org/mailman/listinfo/python-list