In python3, calling next(object) is syntactic sugar for object.__next__(). In python2 this is not the case: calling next(object) is equivalent to object.next(). So yes, it is a little hackish, but necessary.