[Python-3000] Removing __del__
Giovanni Bajo
rasky at develer.com
Sat Sep 23 11:18:48 CEST 2006
Bob Ippolito wrote:
> import weakref
>
> class GarbageDisposal:
> def __init__(self):
> self.refs = set()
>
> def __call__(self, object, func, *args, **kw):
> def cleanup(ref):
> self.refs.remove(ref)
> func(*args, **kw)
> self.refs.add(weakref.ref(object, cleanup))
>
> on_cleanup = GarbageDisposal()
>
> class Wrapper:
> def __init__(self, *args):
> self.handle = CAPI.init(*args)
> on_cleanup(self, CAPI.close, self.handle)
>
> def foo(self):
> CAPI.foo(self.handle)
Try with this:
class Wrapper2:
def __init__(self, *args):
self.handle = CAPI.init(*args)
def foo(self):
CAPI.foo(self.handle)
def restart(self):
self.handle = CAPI.restart(self.handle)
def close(self):
CAPI.close(self.handle)
self.handle = None
def __del__(self):
if self.handle is not None:
self.close()
Giovanni Bajo
More information about the Python-3000
mailing list