[Tutor] making object iterable

bob gailer bgailer at gmail.com
Sun Feb 6 02:12:14 CET 2011


On 2/5/2011 2:46 PM, Alex Hall wrote:
> Hi all,
> I have a class which has a list as an attribute, meaning you must say
> something like:
> for result in obj.results: ...
> I want to make life a bit easier and let users just say:
> for result in obj: ...
> Here is what I have tried to make my class into an iterable one, yet I
> get an error saying that the class does not support indexing:
>
>   def __iter__(self):
>    #makes this class indexable instead of having to use its "results" list
>    return self.iterate()
>
>   def iterate(self):
>    i=0
>    while i<len(self.results):
>     yield self.results[i]
>     i+=1
>
Have you considered subclassing list? That would solve many problems.


-- 
Bob Gailer
919-636-4239
Chapel Hill NC



More information about the Tutor mailing list