harmful str(bytes)
Antoine Pitrou
solipsis at pitrou.net
Fri Oct 8 04:06:16 EDT 2010
On Thu, 07 Oct 2010 23:33:35 +0200
Hallvard B Furuseth <h.b.furuseth at usit.uio.no> wrote:
>
> The offender is bytes.__str__: str(b'foo') == "b'foo'".
> It's often not clear from looking at a piece of code whether
> some data is treated as strings or bytes, particularly when
> translating from old code. Which means one cannot see from
> context if str(s) or "%s" % s will produce garbage.
This probably comes from overuse of str(s) and "%s". They can be useful
to produce human-readable messages, but you shouldn't have to use them
very often.
> I really wish bytes.__str__ would at least by default fail.
Actually, the implicit contract of __str__ is that it never fails, so
that everything can be printed out (for debugging purposes, etc.).
Regards
Antoine.
More information about the Python-list
mailing list