[Python-Dev] Possible py3k io wierdness

Brian Quinlan brian at sweetapp.com
Sun Apr 5 12:56:47 CEST 2009


Antoine Pitrou wrote:
> Brian Quinlan <brian <at> sweetapp.com> writes:
>> I don't see why this is helpful. Could you explain why 
>> _RawIOBase.close() calling self.flush() is useful?
>> I could not explain it for sure since I didn't write the Python version.
> I suppose it's so that people who only override flush() automatically get the
> flush-on-close behaviour.

But the way that the code is currently written, flush only gets called 
*after* the file has been closed (see my original example). It seems 
very unlikely that this is the behavior that the subclass would want/expect.
So any objections to me changing IOBase (and the C implementation) to:
 def close(self):
 """Flush and close the IO object.
 This method has no effect if the file is already closed.
 """
 if not self.__closed:
 try:
- self.flush()
+ IOBase.flush(self)
 except IOError:
 pass # If flush() fails, just give up
 self.__closed = True
Cheers,
Brian


More information about the Python-Dev mailing list

AltStyle によって変換されたページ (->オリジナル) /