I'm having trouble subclassing a class from an extension module. When Python processes my subclass definition, and before any instances are created, it aborts with:
python: Objects/typeobject.c:872: extra_ivars: Assertion `t_size >= b_size' failed.
The extension module is trying to coordinate no less than three different object systems (GObject, CORBA, Python). Let me back up and explain what's going on in there.
In the world of the GTK+ GObject system, I've got a GObject subclass. (It's actually a subclass of BonoboObject, which in turn derives from GObject.) I can write C code that instantiates this GObject-derived class and all is well.
I'm wrapping these GObject instances inside Python objects using h2def.py and pygtk-codegen-2.0. The ".defs" file looks good: there's a define-object construct with the right class name and parent class name. The constructor is detected and wrapped correctly. In the ".override" file I "import bonobo.Object as PyBonoboObject_Type", and everything builds smoothly. I can write Python code that instantiates this wrapper class and all is well.
What I cannot do is subclass this wrapper class in Python code. When I try to, I get the diagnostic message reported earlier:
python: Objects/typeobject.c:872: extra_ivars: Assertion `t_size >= b_size' failed.
Does anyone know what deeper problem this message is symptomatic of? What am I doing wrong in my extension module that would allow it to work correctly when the wrapper class is instantiated directly, but which would cause this error when a subclass of the wrapper class is defined?
It sounds like the size of your object (tp_basicsize) is smaller than the size of your base class. Python raises an assertion here because it would mean that methods of the base class may try to access unallocated memory when presented an instance of the subclass.
Take a look at the examples in the Python descriptor intro document about how to subclass from something like list. That should give an idea of what to do in this case.
James.
-- Email: [EMAIL PROTECTED] WWW: http://www.daa.com.au/~james/
_______________________________________________ pygtk mailing list [EMAIL PROTECTED] http://www.daa.com.au/mailman/listinfo/pygtk Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/
