[issue637094] print to unicode stream should __unicode

STINNER Victor report at bugs.python.org
Thu Feb 12 14:22:33 CET 2009


STINNER Victor <victor.stinner at haypocalc.com> added the comment:

> Python3 fixes the "print" statement to be a function, which allows
> much better extensibility of the concept.
>
> You can have the same in Python2 with a little effort: just create
> your own myprint() function and have it process Unicode in whatever
> way you want.

About myprint(): sure, it's possible to write a custom issue. But the feature 
request was to use obj.__unicode__() instead of obj.__str__() for an "unicode 
aware stream".

The problem with Python2 is that there is not clear separation between "bytes 
stream" ("raw stream"?) and "unicode aware stream" (like io.open or 
codecs.open). I think that fixing this issue (#637094) was one of the goal of 
the new I/O library (io in Python3).

Using __unicode__() for some object and __str__() for some other sounds 
strange/dangerous to me. I prefer bytes-only stream or unicode-only stream, 
but not bytes-and-sometimes-unicode stream.

Python2 has only bytes stream. Python3 has both: open(name, 'rb') is bytes 
only, and open(name, 'r') is unicode only.

lemburg> Does your message mean that you want to reopen the issue?

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue637094>
_______________________________________


More information about the Python-bugs-list mailing list