Michele Simionato <[EMAIL PROTECTED]> writes: >> I've written plenty of Python code that relied on destructors to >> deallocate resources, and the code always worked.
> You have been lucky: No I haven't been lucky -- I just know what I'm doing. > $ cat deallocating.py > import logging > > class C(object): > def __init__(self): > logging.warn('Allocating resource ...') > > def __del__(self): > logging.warn('De-allocating resource ...') > print 'THIS IS NEVER REACHED!' > > if __name__ == '__main__': > c = C() > > $ python deallocating.py > WARNING:root:Allocating resource ... > Exception exceptions.AttributeError: "'NoneType' object has no > attribute 'warn'" in <bound method C.__del__ of <__main__.C object at > 0xb7b9436c>> ignored Right. So? I understand this issue completely and I code accordingly. > Just because your experience has been positive, you should not > dismiss the opinion who have clearly more experience than you on > the subtilities of Python. I don't dismiss their opinion at all. All I've stated is that for my purposes I find that the refcounting semantics of Python to be useful, expressive, and dependable, and that I wouldn't like it one bit if they were removed from Python. Those who claim that the refcounting semantics are not useful are the ones who are dismissing my experience. (And the experience of zillions of other Python programmers who have happily been relying on them.) |>oug -- http://mail.python.org/mailman/listinfo/python-list