[Tutor] _next
Christopher Spears
cspears2002 at yahoo.com
Thu May 25 03:30:31 CEST 2006
How does this script work?
#!/usr/bin/python
class IteratorExample:
def __init__(self, s):
self.s = s
self.next = self._next().next
self.exhausted = 0
def _next(self):
if not self.exhausted:
flag = 0
for x in self.s:
if flag:
flag = 0
yield x
else:
flag = 1
self.exhausted = 1
def __iter__(self):
return self._next()
def main():
a = IteratorExample('edcba')
for x in a:
print x
print '=' * 30
a = IteratorExample('abcde')
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
print a.next()
if __name__ == '__main__':
main()
Here is the output:
d
b
==============================
b
d
Traceback (most recent call last):
File "./python_101_iterator_class.py", line 35, in ?
main()
File "./python_101_iterator_class.py", line 29, in
main
print a.next()
StopIteration
I think a lot of my confusion comes from not
understanding what _next is. I got this script from
an online tutorial at python.org. Is there a better
way to write the script, so I can actually understand it?
"I'm the last person to pretend that I'm a radio. I'd rather go out and be a color television set."
-David Bowie
"Who dares wins"
-British military motto
"I generally know what I'm doing."
-Buster Keaton
More information about the Tutor
mailing list