. -
iter (o [, ])
-. - . o , ( __iter__()) ( __getitem__() , 0).
, , iter() __iter__(). , , , , .
-
In [13]: class CA:
....: def __iter__(self):
....: print('Inside __iter__')
....: return iter([1,2,3,4])
....:
In [14]: c = CA()
In [15]: iter(c)
Inside __iter__
Out[15]: <list_iterator at 0x3a13d68>
In [16]: c.__iter__()
Inside __iter__
Out[16]: <list_iterator at 0x3a13908>
In [17]: class BA:
....: def __getitem__(self,i):
....: print('Inside __getitem__')
....: return i+5
....:
In [18]: b = BA()
In [19]: iter(b)
Out[19]: <iterator at 0x3a351d0>
In [20]: x = iter(b)
In [21]: next(x)
Inside __getitem__
Out[21]: 5
In [23]: next(x)
Inside __getitem__
Out[23]: 6
, , iter() , -
In [24]: i = iter(c)
Inside __iter__
In [25]: j = iter(c)
Inside __iter__
In [26]: for x in i:
....: pass
....:
In [27]: next(i)
StopIteration Traceback (most recent call last)
<ipython-input-27-bed2471d02c1> in <module>()
StopIteration:
In [28]: next(j)
Out[28]: 1
, i , j , , ( ).