does python have useless destructors?
Donn Cave
donn at u.washington.edu
Fri Jun 18 12:35:49 EDT 2004
In article <m34qp9ma5h.fsf at pc150.maths.bris.ac.uk>,
Michael Hudson <mwh at python.net> wrote:
> Donn Cave <donn at u.washington.edu> writes:
>
> > In article <m3hdtam7z0.fsf at pc150.maths.bris.ac.uk>,
> > Michael Hudson <mwh at python.net> wrote:
> >
> > > Donn Cave <donn at u.washington.edu> writes:
> > >
> > > > In article <m3k6y6o8cd.fsf at pc150.maths.bris.ac.uk>,
> > > > Michael Hudson <mwh at python.net> wrote:
> > > > > Donn Cave <donn at u.washington.edu> writes:
> > > > > > In article <m3fz8xozi1.fsf at pc150.maths.bris.ac.uk>,
> > > > > > Michael Hudson <mwh at python.net> wrote:
> > > > > > > I would urge everyone participating in this thread to read PEP
> > > > > > > 310,
> > > > > > > the email conversation linked therein and (optional) *understand*
> > > > > > > it.
> > > > > >
> > > > > > It seems to be superficially similar to finalization,
> > > > >
> > > > > OK, I've found this thread pretty hard to follow. What is
> > > > > "finalization" in context?
> > > >
> > > > Operational definition would be `call __del__ or its C equivalent',
> > > > at the effective end of the object's lifetime.
> > >
> > > OK. I claim you can't really have that, and that you don't really
> > > need it anyway. The idea behind PEP 310 is to acheive the ends of
> > > RAII in C++ by different means.
> > >
> > > What else do you want to use __del__ methods for?
> >
> > That would be my question. That's what __del__ methods _are_
> > used for. C Python users _do_ really have that, it just takes
> > more care than we like if it needs to be 100% reliable.
>
> Now you've lost me.
>
> What did the last __del__ method you wrote do?
I can't specifically remember the last one, but scrounging
around a bit I see an application where I have a __del__
method that releases a kernel semaphore, and a dealloc function
that quits its kernel thread and adds a pending call to delete
its Python thread state.
I wonder if I have created confusion by not getting the
antecedents right, or something like that, when responding
to your question. All I'm saying is that we do have finalization
in C Python, and that's what __del__ is about as far as I can
tell. I don't know what RAII means (or doesn't mean) well
enough to make any difference (now I know what the acronym is,
but what do automatic variables have to do with Python?)
Donn Cave, donn at u.washington.edu
More information about the Python-list
mailing list