StringIO proposal: add __iadd__

Paul Rubin http
Sun Jan 29 17:05:51 EST 2006


aleax at mail.comcast.net (Alex Martelli) writes:
> What's the added value of spelling x.write(v) as x += v?  Is it worth
> the utter strangeness of having a class which allows += and not + (the
> only one in the std library, I think it would be)...?

Sure, + can also be supported.  Adding two StringIO's, or a StringIO to a
string, results in a StringIO with the obvious contents.

> In StringIO's case, it's nice to be able to use the above idiom to
> concatenate Unicode strings just as easily as plain ones, for
> example -- cStringIO (like file objects) wants plain bytestrings.

I wasn't aware of that limitation--maybe cStringIO could be extended
to take Unicode.  You'd use an encode or decode method to get a
bytestring out.  Or there could be a mutable-string class separate
from cStringIO, to be used for this purpose (of getting rid of the
list.append kludge).

> But I hope the pure-python "reference" modules stay around (and,
> indeed, I'd love for them to _proliferate_, maybe by adopting some
> of the work of the pypy guys at some point;).

Maybe the standard versions of some of these things can be written in
RPython under PyPy, so they'll compile to fast machine code, and then
the C versions won't be needed.  But with CPython I think we need the
C versions.



More information about the Python-list mailing list