import kaa import _weakref def logerror(w, error): print 'unhandled error:', error class Foo(object): def __init__(self): self._weakref = None def throw(self): self._weakref = _weakref.ref(self, kaa.Callback(logerror, 'error message')) def handle(self): self._weakref = None print 'start' f = Foo() f.throw() # comment in/out the next line to see the difference f.handle() del f print 'done'