does python have useless destructors?

Aahz aahz at pythoncraft.com
Fri Jun 18 05:17:51 EDT 2004


In article <e251b7ba.0406180030.24163b52 at posting.google.com>,
David Turner <dkturner at telkomsa.net> wrote:
>aahz at pythoncraft.com (Aahz) wrote in message news:<catbcs$8d0$1 at panix2.panix.com>...
>> In article <e251b7ba.0406150035.16336fb3 at posting.google.com>,
>> David Turner <dkturner at telkomsa.net> wrote:
>>>aahz at pythoncraft.com (Aahz) wrote in message news:<cal53o$c1b$1 at panix3.panix.com>...
>>>> In article <e251b7ba.0406132335.6e65beba at posting.google.com>,
>>>> David Turner <dkturner at telkomsa.net> wrote:
>>>>>
>>>>>In fact, the RAII idiom is quite commonly used with heap-allocated
>>>>>objects.  All that is required is a clear trail of ownership, which is
>>>>>generally not that difficult to achieve.  
>>>> 
>>>> Not really.  What you're doing is what I'd call "virtual stack" by
>>>> virtue of the fact that the heap objects are being managed by stack
>>>> objects.
>>>
>>>Having read this through a second time, I'm not sure that you
>>>understood the C++ code I posted.  So here is an equivalent in Python:
>>>
>[snip]
>>>
>>>No stack objects in sight, yet this code is semantically equivalent to
>>>the C++ code.
>> 
>> Not really.  Problem is that there's nothing to prevent people from
>> passing File.fh outside the loop -- and that's standard Python coding
>> technique!  For that matter, there's nothing preventing a File()
>> instance from being passed around.  The fact that you've created an
>> idiom that you want to behave like a similar C idiom has nothing to do
>> with the way Python actually works.
>
>You can do exactly the same thing in the C++ version, and regularly
>do.  What's your point?

And how does your destructor work when you do that?
-- 
Aahz (aahz at pythoncraft.com)           <*>         http://www.pythoncraft.com/

"Typing is cheap.  Thinking is expensive."  --Roy Smith, c.l.py



More information about the Python-list mailing list