On 5/26/08, Stephen J. Turnbull <[EMAIL PROTECTED]> wrote:
> Jim Jewett writes:

>   > The only reason for this change is that __repr__ gets used when
>   > __str__ *should* be used instead.

> That's not what the advocates say.

I still haven't seen a use case where it *should* be using repr *and*
needs to print outside of ASCII.

There are plenty of cases where it *is* using repr because
str(container) fell back to repr, and then the contained strings stay
in repr instead of shifting back to str.  I just haven't seen any
where repr is the *right* function, as opposed to what they're stuck
with because a container doesn't implement a separate __str__.  [The
file exceptions *may* be a separate case, because of tracebacks using
repr to print, but I'm not sure even there.]

> Well, in `String Conversions', the manual says """In particular,
>  converting a string adds quotes around it and converts
>  "funny" characters to escape sequences that are safe to print."""

>  Now, I agree with you about what's "safe".  However, in a text-
>  processing application in a Japanese environment, that's hardly
>  useful, and our Japanese programmer can argue that in his environment,
>  printing all of Unicode *is* safe.

I think he or she will still be wrong, because of confusables -- it is
just that "unsafe" characters are far more rare (since byte value
alone isn't a problem) and the cost of not printing non-ASCII
characters is higher.

So I suggest that he or she use str, rather than repr -- and that we
fix containers to make this possible.

>   > Again -- *why* is repr used instead of str?

> I don't use it myself other than as a way of diagnosing bugs in
>  programs I write or maintain; in personal practice, I'm in your camp.
>  But my understanding is that there is often an intermediate level,
>  such as a website admin, who needs *some* of the precision of repr()
>  such as escaped representation of whitespace, but also needs to be
>  able read most of the output.

Could someone who does need this explain more?

I understand wanting the two side-by-side.  I sometimes want that with hex.

I understand wanting a container's contents to be readable.  I realize
you can't easily get that today, and consider that a bug.  (Nick's
disagreement noted.)

I don't understand needing *exactly* whitespace escaped, but not, say,
stray characters from scripts you've never used, even though the rest
of the page *is* in an expected script.

-jJ
_______________________________________________
Python-3000 mailing list
Python-3000@python.org
http://mail.python.org/mailman/listinfo/python-3000
Unsubscribe: 
http://mail.python.org/mailman/options/python-3000/archive%40mail-archive.com

Reply via email to