import weakref import gc class C(object): def __init__(self, i): self.i = i self.loop = self def callback(ignored): ouch[:] = [wr() for wr in WRs] Cs = [C(i) for i in range(2)] WRs = [weakref.ref(c, callback) for c in Cs] c = None ouch = [] gc.collect() del Cs[:] gc.collect() for x in ouch: print "type(x) =", type(x) if x is not None: print "x.__dict__ =", x.__dict__ print "x.i =", x.i