[Tutor] How to use __iter__
Jia-Yu Aw
jiayuaw at yahoo.com.sg
Tue Aug 9 03:48:20 CEST 2011
Hi all
I've been learning Classes and have read the documentation on __iter__ but still don't understand how it works. I have two pieces of code: the first is def __iter__, the second is using __iter__. Instead of being an iterator, I'm just using this is a function, which I think is incorrect. Can somebody explain __iter__ and, if it's related, next()?
This is the first. But unlike what it says in the triple quotes, I return a whole list instead of a single shape:
def __iter__(self):
"""
Return an iterator that allows you to iterate over the set of
shapes, one shape at a time
"""
import copy
setCopy = copy.copy(self.set)
shapeList = []
while len(setCopy) > 0:
try:
y = setCopy[0]
shapeList.append(y)
setCopy.remove(y)
except StopIteration:
break
return shapeList
The second, how I've used __iter__:
def findLargest(shapes):
"""
Returns a tuple containing the elements of ShapeSet with the
largest area.
shapes: ShapeSet
"""
## TO DO
areaList = []
areaDict = {}
largestDict = {}
shapeList = shapes.__iter__()
for s in shapeList:
areaDict[s] = s.area()
areaList.append(s.area())
largestArea = max(areaList)
areaList = [] #re-initialize areaList, cleaning it
import copy
dictCopy = copy.copy(areaDict)
for a in areaDict:
if areaDict[a] != largestArea:
del dictCopy[a]
return tuple(dictCopy)
Thanks
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20110809/9af8b7d1/attachment.html>
More information about the Tutor
mailing list