Andrew Barnert added the comment:

> I don’t think you need to define __len__() to get an iterable, only 
> __getitem__().

The "old-style sequence protocol" means having a __getitem__ that works for 
values from 0 to __len__() and raises IndexError at __len__(). You don't need 
to be a complete old-style sequence to be iterable; just having __getitem__ 
makes you iterable (without being a collections.abc.Iterable or a 
typing.Iterable), and having __getitem__ and __len__ makes you reversible 
(without being a typing.Reversible). At any rate, this bug isn't about avoiding 
false negatives for the implicit ABCs, but false positives: defining __iter__ = 
None blocks the old-style sequence protocol, but makes isinstance(Iterable) 
true.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue25958>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to