En Sat, 19 May 2007 10:54:32 -0300, Gre7g Luterman <[EMAIL PROTECTED]> escribió:
> I'm so confuzzled! How do I instantiate my new C Python object from C? > I tried inserting some code with _PyObject_New and PyObject_Init: > > Then I compiled, went into the Python interpreter and tried it. I would > have expected Noddy_name to create and destroy a Noddy object just like > noddy2.Noddy() does from the interpreter, but it doesn't: From Python, you create a Noddy object by *calling* its type. Do the same in C: return PyObject_CallObject((PyObject *) &NoddyType, NULL); Or any other suitable variant of PyObject_CallXXX. (I've answered this same question yesterday, when I was not sure about this; then I've tried it and it appears to be working. But I've not read any docs telling this is *the* right way to create an object). > I've tried this as above, and with PyInstance_New, with PyObject_New (no > underscore), and PyObject_Call, but none of them work as I would expect. > So > what is the *CORRECT* way to do this? Obviously I'm neglecting something > important. PyInstance_New is for old style classes. PyObject_New only initializes the object structure, and this is enough for most builtin types that usually don't define __init__ (or tp_init). You were right with PyObject_Call, but maybe you didn't invoke it correctly. -- Gabriel Genellina -- http://mail.python.org/mailman/listinfo/python-list
