[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