[Tutor] making object iterable
Alex Hall
mehgcap at gmail.com
Sat Feb 5 20:46:09 CET 2011
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)
mehgcap at gmail.com; http://www.facebook.com/mehgcap
More information about the Tutor
mailing list