[Python-Dev] Re: Object finalization for local (ie function) scop es
Jewett, Jim J
jim.jewett at eds.com
Tue Jun 15 16:26:11 EDT 2004
Paul Moore:
> Can you enumerate precisely how your proposal differs from PEP 310?
> ...
> 3. Derives the objects to call the "release" method on, based on some
> sort of local variable scan (I don't follow this too well, so I
> apologise if I've described it badly).
My (perhaps faulty) understanding is that it depended only
on the class of the object.
PEP 310 says to call the __enter__ and __exit__ methods if an
object is wrapped by a "with:" clause.
The scope-guard proposal says to call those methods anytime
they exist.
Neither works well with the rare case when you do want the
object to outlive its initial scope.
I see a best-of-both-worlds by treating __exit__ as a
mini-__del__. __exit__ would typically be called sooner,
and it would always be called, even if this meant breaking
cycles in an arbitrary order.
Unfortunately, one reason __del__ cycles aren't broken this
way is that people don't always follow the guidance for what
should be done in a __del__ function. The meaning of __exit__
would be "okay, we'll run the cleanup like we should, but now
messups are your own fault!". If that wasn't OK the first
time (__del__), I'm not sure it will be OK the second.
-jJ
More information about the Python-Dev
mailing list