[Python-Dev] C new-style classes and GC
Guido van Rossum
guido@python.org
Fri, 16 May 2003 13:37:21 -0400
> It's not clear to me what the one right way to implement a tp_dealloc
> slot is. I've seen two common patterns in the Python source: call
> obj->ob_type->tp_free or call PyObject_GC_Del. The type object
> initializes tp_free to PyObject_GC_Del, so in most cases the two
> spellings are equivalent. Calling PyObject_GC_Del feels more
> straightforward to me.
But calling tp_free is more correct. This allows a subclass to change
the memory allocation policy. (This is also important if a base class
is not collectible but a subclass is -- then it's essential that the
base class dealloc handler calls tp_free.)
--Guido van Rossum (home page: http://www.python.org/~guido/)