[Tutor] iter class

eryksun eryksun at gmail.com
Thu Jan 23 17:07:37 CET 2014


On Thu, Jan 23, 2014 at 10:50 AM, Keith Winston <keithwins at gmail.com> wrote:
> On Thu, Jan 23, 2014 at 7:05 AM, eryksun <eryksun at gmail.com> wrote:
>> Generally you'll make `__iter__` a generator, so you don't have to
>> worry about implementing `__next__`. Also, the built-in function
>> `next` was added in 2.6, so you don't have to worry about the method
>> name difference between 2.x and 3.x, either.
>
> Yes, the exercise was about implementing an iter incorrectly, to see
> the difference. But I don't really understand your second point: when
> I changed the method name, it worked...?

The page you sited discusses iterating the "old-fashioned way" in a
loop that calls `some_iter.next()`. Nowadays it's `next(some_iter)`,
which works in 2.6+ and 3.x. So if `__iter__` is a generator, you
don't implement '__next__` and generally won't have to call it
explicitly -- unless for some reason you need to pass the bound method
as a callable.


More information about the Tutor mailing list