On Sun, Mar 15, 2020 at 06:27:43PM -0700, Christopher Barker wrote:
> Anyway, Python now has two different ways to "turn this into a string":,
> __str__ and __repr__. I think the OP is suggesting a third, for "pretty
> version". But then maybe folks would want a fourth or fifth, or .....
>
> maybe we should, instead, think about updating the __str__ for standard
> types.
>
> Is there any guarantee (or even string expectation) that the __str__ for an
> object won't change?
I think there is a strong expectation, even if there's no formal
guarantee, that the str and repr of builtins and stdlib objects will be
reasonably stable. If they change, it will break doctests and make a
huge amount of documentation, blogposts, tutorials, books etc out of
date.
That's not to say that we can't do it, just that we shouldn't be too
flippant about it. A few releases back (3.5? 3.4? I forget...) we
changed the default float repr:
python2.5 -c "print 2.0/3"
0.666666666667
python3.5 -c "print(2.0/3)"
0.6666666666666666
One advantage of that is that some values are displayed with the nearest
human-readable exact value, instead the actual value.
One disadvantage of that is that some values are displayed with the
nearest human-readable exact value, instead of the actual value :-)
> I've always wondered why the standard str(some object) wasn't pretty to
> begin with.
Define "pretty". The main reason I don't use the pprint module at the
moment is that it formats things like lists into a single long, thin
column which is *less* attractive than the unformatted list:
py> pprint.pprint(list(range(200)))
[0,
1,
2,
3,
...
198,
199]
I've inserted the ellipsis for brevity, the real output is 200 rows
tall.
When it comes to floats, depending on what I'm doing, I may consider any
of these to be "pretty":
* the minimum number of digits which are sufficient to round trip;
* the mathematically exact value, which could take a lot of digits;
* some short number of digits, say, 5, that is "close enough".
--
Steven
_______________________________________________
Python-ideas mailing list -- [email protected]
To unsubscribe send an email to [email protected]
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at
https://mail.python.org/archives/list/[email protected]/message/IC6VE64XCU52S3LKYHESOORTWIHETMP3/
Code of Conduct: http://python.org/psf/codeofconduct/