As I understand it, I can use the for
loop construction on an object with a __iter__
method that returns an iterator. I have an object for which I implement the following __getattribute__
method:
def __getattribute__(self,name):
if name in ["read","readlines","readline","seek","__iter__","closed","fileno","flush","mode","tell","truncate","write","writelines","xreadlines"]:
return getattr(self.file,name)
return object.__getattribute__(self,name)
I have an object of this class, a
for which the following happens:
>>> hasattr(a,"__iter__")
True
>>> for l in a: print l
...
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'TmpFile' object is not iterable
>>> for l in a.file: print l
...
>>>
So python sees that a
has an __iter__
method, but doesn't think it is iterable. What have I done wrong? This is with python 2.6.4.