[Python-Dev] string representation of range in 3.0
Isaac Morland
ijmorlan at cs.uwaterloo.ca
Wed Apr 16 17:39:30 CEST 2008
On Wed, 16 Apr 2008, David Wolever wrote:
> On 16-Apr-08, at 9:37 AM, Isaac Morland wrote:
>> On Wed, 16 Apr 2008, Paul Moore wrote:
>>> On 16/04/2008, Armin Rigo <arigo at tunes.org> wrote:
>>>> What about the less confusing and more readily generalizable:
>>>> <range object 0, 1, ..., 9>
>>>>
>>>> It would also be helpful IMHO to use this kind of repr for most built-in
>>>> iterators and iterables, instead of their mosty-useless default repr.
>>>
>>> I quite like this. But as a non-beginner, I'll freely admit that my
>>> intuitions are suspect :-)
>>
>> I like this too. For iterators, though, would you always show the next
>> couple of elements? The values "contained in" the iterator will change as
>> the iterator iterates. Alternatively, the representation could be
>> "frozen" to reflect the values originally pending in the iterator, but
>> then the representation wouldn't show anything about the current state of
>> the iterator.
> So would you mean something like:
> <generator object <__main__.Foo instance at 0x835d0>, <__main__.Foo instance
> at 0x83620>, ...>
> Or maybe:
> <generator <__main__.Foo instance at 0x835d0>, <__main__.Foo instance at
> 0x83620>, ... >
>
> While I agree in theory, I'm not sure I like the looks of it in practise.
I was mostly responding to what I saw as a suggestion to change the
representation of existing iterators. It's been pointed out in a previous
reply to my message that obtaining values from a general iterator for use
in the representation is problematic at best, and in general I don't think
it can be done in an acceptable fashion, because I can imagine code
depending on values not being obtained from an iterator before they are
explicitly requested by next(). We wouldn't want a call to __repr__() to
change the operation of the iterator, so any idea to pull two values and
store them somewhere isn't generally acceptable.
For some specific iterators which have access to all the underlying
information, an informative representation is possible and frequently
feasible. My question simply concerned what it would look like. Would it
show the next couple of items, or the first couple of items (or something
else)?
Isaac Morland CSCF Web Guru
DC 2554C, x36650 WWW Software Specialist
More information about the Python-Dev
mailing list