You should probably read this section in the python tutorial:

http://docs.python.org/tutorial/classes.html#iterators

If you have any questions after that, I would suggest posting back here but
that should cover it.

On Sat, Feb 5, 2011 at 2:46 PM, Alex Hall <[email protected]> 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
>
> I am not sure why this does not work, unless I am misunderstanding
> something about iterators and iterables? I thought an iterable, which
> is what I am shooting for, was an iterator on steroids, allowing
> indexing, multiple passes over the list, and all that. Do I want to
> make this an iterator instead of an iterable?
>
>
> --
> Have a great day,
> Alex (msg sent from GMail website)
> [email protected]; http://www.facebook.com/mehgcap
> _______________________________________________
> Tutor maillist  -  [email protected]
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to