[Python-3000] PEP 3138- String representation in Python 3000

Nick Coghlan ncoghlan at gmail.com
Tue May 27 04:32:24 CEST 2008


Jim Jewett wrote:
> On 5/26/08, Adam Olsen <rhamph at gmail.com> wrote:
>> On Mon, May 26, 2008 at 5:24 PM, Oleg Broytmann <phd at phd.pp.ru> wrote:
>>> > There are two different and unrelated problems. One is that
>> > str(container) calls repr() on items. This probably could be fixed with
>> > a flag to repr() so it remembers it was called from str(). This has nothing
>> > with hex-encoding strings - calling str() on items would be a win in any
>> > case, especially for items that implements both __str__ and __repr__
>> > methods.
>>> There's a reason for that convention. Would you prefer str(['1', '2',
>> '3']) return '[1, 2, 3]'?
>> I don't think anyone is arguing about how to display
>> >>> "%" % string
>> The problem is classes where str(x) != repr(x), and how they get
> messed up when a container holding (one of their) instances is
> printed.

This is NOT a bug, since str([1, 2, 3]) and str(list("123")) SHOULD 
produce results that look different. Calling str() internally to display 
the contents of containers is a broken idea. The ambiguity that 
recursive calls to str() would introduce would make any concerns about 
potential confusion between different Unicode glyphs seem utterly 
inconsequential.
Cheers,
Nick.
-- 
Nick Coghlan | ncoghlan at gmail.com | Brisbane, Australia
---------------------------------------------------------------
 http://www.boredomandlaziness.org


More information about the Python-3000 mailing list

AltStyle によって変換されたページ (->オリジナル) /