""" A module for externalized finalizers. """ import weakref garbageKey = 0 def callbackFactory(num, fins): def _cb(w): del refs[num] for fx in fins: fx() return _cb refs = {} def register(inst): global garbageKey garbageKey += 1 r = weakref.ref(inst, callbackFactory(garbageKey, inst.__finalizers__())) refs[garbageKey] = r if __name__ == '__main__': def fin(): print 'I am _so_ dead.' class Finalizeable: """ An un-sucky __del__ """ def __finalizers__(self): """ I'm going away. """ return [fin] f = Finalizeable() f.f2 = f register(f) del f import gc gc.collect() print 'deled'