Supporting list()
Ethan Furman
ethan at stoneleaf.us
Mon Dec 17 18:30:27 EST 2012
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.)
You can either use __iter__ and next to conform to the iterator
protocol, or you can define __getitem__.
If using __getitem__ it needs to work with integers from 0 to len(f)-1,
and raise IndexError for len(f), len(f+1), etc.
~Ethan~
More information about the Python-list
mailing list