Exceptions and Object Destruction (was: Problem with apsw and garbage collection)
Charles Yeomans
charles at declareSub.com
Wed Jun 17 22:58:27 EDT 2009
On Jun 17, 2009, at 9:43 PM, Steven D'Aprano wrote:
> On Wed, 17 Jun 2009 07:49:52 -0400, Charles Yeomans wrote:
>
>>> Even CPython doesn't rely completely on reference counting (it has a
>>> fallback gc for cyclic garbage). Python introduced the "with"
>>> statement to get away from the kludgy CPython programmer practice of
>>> opening files and relying on the file being closed when the last
>>> reference went out of scope.
>>
>> I'm curious as you why you consider this practice to be kludgy; my
>> experience with RAII is pretty good.
>
> Because it encourages harmful laziness. Laziness is only a virtue
> when it
> leads to good code for little effort, but in this case, it leads to
> non-
> portable code. Worse, if your data structures include cycles, it also
> leads to resource leaks.
>
Memory management may be an "implementation detail", but it is
unfortunately one that illustrates the so-called law of leaky
abstractions. So I think that one has to write code that follows the
memory management scheme of whatever language one uses. For code
written for CPython only, as mine is, RAII is an appropriate idiom and
not kludgy at all. Under your assumptions, its use would be wrong, of
course.
Charles Yeomans
More information about the Python-list
mailing list