[Python-ideas] An ABC representing "Iterable, Sized, Container"

Daniel Moisset dmoisset at machinalis.com
Fri Jul 22 10:20:18 EDT 2016


This is a bit of a tangent, hopefully convergent, but hey, this is
python-ideas:

Would there be interest in some kind of method/API for restarting
iterators? If there was a it.restart() (or reset(it)), it would probably be
a good idea to name the concept in the same way as the method (
"Restartable" or "Resettable"). And having that as an actual protocol would
simplify the discussion on both what the type should contain and how it
should be named, while having actal applications to simplify code (and
reduce memory usage in cases when creating a list is not needed, just
making multiple passes).

I'm not proposing one of those names in particular, discussing whether this
concept makes sense and is useful should be before the naming


On Fri, Jul 22, 2016 at 3:44 AM, Stephan Hoyer <shoyer at gmail.com> wrote:

> On Thu, Jul 21, 2016 at 9:04 PM, Guido van Rossum <guido at python.org>
> wrote:
>
>> If it really must be two words, how about SizedIterable? That suggests
>> it's a subclass of Sized and Iterable, which it is. Container doesn't
>> need separate mention, it's pretty obvious that any Iterable can
>> implement __contains__, and more people know that Iterable is an ABC
>> than Container.
>
>
> In my experiments with type annotations, we recently encountered this
> exact same issue (variables for which either sets or lists should be
> valid). My initial solution was almost exactly what you propose here: we
> wrote a SizedIterable class, simply inheriting from Sized and Iterable.
>
> Ultimately, we didn't find this very satisfying, because we realized that
> strings are SizedIterables (they're sequences, too), and we really didn't
> want to allow accidentally passing strings that would be interpreted as
> iterables of characters. Unfortunately, I don't think there's any good way
> in Python to specify "any sized iterable that isn't a string".
>
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>



-- 
Daniel F. Moisset - UK Country Manager
www.machinalis.com
Skype: @dmoisset
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20160722/3ddd5a52/attachment-0001.html>


More information about the Python-ideas mailing list