Hallvard B Furuseth, 11.10.2010 23:45:
If there were a __plain_str__() method which was supposed to fail rather
than start to babble Python syntax, and if there were not plenty of
Python code around which invoked __str__, I'd agree.

Yes, calling str() "just in case" has a clear code smell. I think that's one of the reasons why b'abc' was chosen as output of bytes.__str__, to make it clearly visible a) what the type of the value is, e.g. in an interactive session, and b) that this wasn't the intended operation if it happened during string interpolation etc. and that the user code needs fixing. After all, you were complaining about a clearly visible problem (in urlunparse) that was easy to find given the incorrect output.

I think raising an exception in bytes.__str__ would be a horrible thing to do. That would make it really hard and dangerous to look at bytes objects in a debugger or interpreter session. I think the current way bytes.__str__ behaves is a good tradeoff between safety and usability, and the output is also very clear and readable.

Stefan

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to