[Python-3000] PEP: Eliminate del (original) (raw)

Guido van Rossum guido at python.org
Fri May 4 06:34:58 CEST 2007


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/)



More information about the Python-3000 mailing list