[Python-3000] isinstance(., Iterable) vs lookup('__iter__') != None Re: *View in abc.py not inheriting Iterable Re: PEP 3119 - Introducing Abstract Base Classes

Samuele Pedroni pedronis at openendsystems.com
Sat Apr 28 21:28:59 CEST 2007


Guido van Rossum wrote:
> On 4/28/07, Samuele Pedroni <pedronis at openendsystems.com> wrote:
>> Shouldn't the various *View in abc.py be Iterables (inherit from 
>> Iterable) ?
>
> Oops, it looks like this is a mess. There are two classes
> _MappingView. Ignore them for the sake of the PEP. I'll clean them up
> later. We probably need fewer mapping classes, nor more...
>
It seems that something that defines __iter__ should also subclass Iterable,
in this kind of situation where the special method is unique enough it seems
quite repetitive to have to do both. It seems easy to forget to subclass.

Shouldn't now that there are isinstance hooks Iterable be defined again 
in terms
of just checking for the presence of '__iter__' lookup-wise?  I suppose 
there are some other similar
cases, of course in other situations the ABC carry an intention that 
goes beyond the presence
of methods.




More information about the Python-3000 mailing list