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