some question about tp_basicsize

Dmitry Belous dmitry_belous at ua.fm
Thu Feb 10 08:31:21 EST 2005


Hi, All

I use C++ to create new types(inherited from PyTypeObject)
and objects(inherited from PyObject) and virtual
destructor to destroy objects. sizeof() is different
for different objects and therefore i don't know what i must do
with tp_basicsize.

Will the following source code work?
Must i set tp_basicsize to right size? (Can I use zero
for tp_basicsize?)

static void do_instance_dealloc(PyObject* obj) {
  if(obj->ob_type == &mytype_base)
    delete static_cast<myobject_base*>(obj);
}

PyTypeObject mytype_base = {
...
  0, /*tp_basicsize*/ /*i don't know size of object*/
...
  &do_instance_dealloc, /*tp_dealloc*/
...
};

class myobject_base : public PyObject {
public:
  myobject_base() : ob_type(mytype_base) {}
  virtual ~myobject_base() {}
};

class myobject_specific : public myobject_base {
public:
  std::string name;
  myobject_specific() : myobject_base() {}
};




More information about the Python-list mailing list