[Python-3000] PEP: Eliminate del (original) (raw)
Guido van Rossum guido at python.org
Fri May 4 06:34:58 CEST 2007
- Previous message: [Python-3000] PEP: Eliminate __del__
- Next message: [Python-3000] PEP: Eliminate __del__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
In all the threads about this PEP I still haven't seen a single example of how to write a finalizer.
Let's take a specific example of a file object (this occurs in io.py in the p3yk branch). When a write buffer is GC'ed it must be flushed. The current way of writing this is simple:
class BufferedWriter:
def init(self, raw): self.raw = raw self.buffer = b""
def write(self, data): self.buffer += data if len(self.buffer) >= 8192: self.flush()
def flush(self): self.raw.write(self.buffer) self.buffer = b""
def del(self): self.flush()
How would I write this without using del(), e.g. using weak references?
P.S. Don't bother arguing that the caller should use try/finally or whatever. That's not the point. Assuming we have a class like this where it has been decided that some method must be called upon destruction, how do we arrange for that call to happen?
-- --Guido van Rossum (home page: http://www.python.org/~guido/)
- Previous message: [Python-3000] PEP: Eliminate __del__
- Next message: [Python-3000] PEP: Eliminate __del__
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]