Supporting list()
Ethan Furman
ethan at stoneleaf.us
Mon Dec 17 18:27:47 EST 2012
Dave Angel wrote:
> On 12/17/2012 09:33 AM, Skip Montanaro wrote:
>> What method(s) does a class have to support to properly emulate a container
>> which supports turning it into a list? For example:
>>
>> class Foo:
>> pass
>>
>> f = Foo()
>> print list(f)
>>
>> Is it just __iter__() and next()? (I'm still using 2.4 and 2.7.)
>
> I believe the container class needs to define the __iter__() method,
> which has to return an iterator object.
>
> That (possibly different) iterator class needs both an __iter__() method
> and a next() method.
>
> If the container class is also the iterator class, which is common, then
> you just need one __iter__() method, which returns self.
The `next()` method is also needed, as `__iter__()` and `next()` are the two methods that make up
the iterator protocol (`__next__` in python 3k).
~Ethan~
More information about the Python-list
mailing list