Jeremy Moles writes:
in the world I got the idea from! According to the docs, METH_VARARGS is (PyObject*, PyObject*)?
Right.
My prototype shouldn't even compile... but it
Why wouldn't it compile?
2. No where in the docs does it show how to "correctly" create an instance of your custom PyTypeObject in C (rather than in the interpreter). I'm using:
That's what tp_alloc is for. Then you call tp_init to initialize it.But, your tp_new handler should already invoke tp_alloc, so it's cleaner to call tp_new, followed by tp_init.
3. I'm not able to return the "self" argument (useful, for instance, when you want to chain a group of method calls) without screwing things up really, really bad. For example: PyObject* somefunc(cstruct* self, PyObject* args, PyObject* kargs) { self->pointerToData->doSomeStuff(); return (PyObject*)(self); } ...returns "something"; it has the methods you would expect, but trying to use the object when it gets back to the interpreter is pretty much undefined behavior. :) It's seen as a "<refcnt...>" instance in the interpreter, even though a dir() shows it still has the methods you would expect.
You need to increment the reference count of the object, in this case.
pgpU4yWTepvmr.pgp
Description: PGP signature
-- http://mail.python.org/mailman/listinfo/python-list