Насколько я понимаю, я могу использовать конструкцию цикла for
для объекта с методом __iter__
, который возвращает итератор. У меня есть объект, для которого я реализую следующий метод __getattribute__
:
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)
У меня есть объект этого класса, a
, для которого происходит следующее:
>>> 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
...
>>>
Итак, python видит, что a
имеет метод __iter__
, но не думает, что он повторяется. Что я сделал не так? Это с Python 2.6.4.