Hi all!

I am trying to call within a C extension a Python function provided as
an argument by the user with: PyObject_Call(). The C extension should
work also if the user supplies a class method, but in this case I am
getting an error. Do I need to explicitly pass 'self' as an argument
to PyObject_Call()? If so, how can I do that?

Now, I am using:

if ((tmp_args = PyTuple_New(1)) == NULL)
                PyErr_SetString( PyExc_ReferenceError, "attempt to access a 
null-
pointer" );
PyTuple_SetItem(tmp_args, 0, paramlist);

to create the tuple required by PyObject_Call(), but I have no idea on
how to add a reference to 'self'.

Here is what I would like to obtain:

##
import mymodule

def myfunc(x):
        # Do something
        return [z]

class MyClass:
        def mymethod(self, x):
                # Do something
                return z
        def runme(self):
                mymodule.main(myfunc) # This will work
                mymodule.main(self.mymethod) # This will not work (Segmentation
fault)

x = MyClass()
x.runme()
##

Thanks in advance.

Mauro

-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to