Writing a custom iterator
Now we have all the tools to appreciate how we can write our own custom iterator. Let us first define what iterable and iterator mean:
- Iterable: An object is said to be iterable if it can return its members one at a time. Lists, tuples, strings, and dictionaries are all iterables. Custom objects that define either of the
__iter__()
or__getitem__()
methods are also iterables. - Iterator: An object is said to be an iterator if it represents a stream of data. A custom iterator is required to provide an implementation for the
__iter__()
method that returns the object itself, and an implementation for the__next__()
method that returns the next item of the data stream until the stream is exhausted, at which point all successive calls to__next__()
simply raise aStopIteration
exception. Built-in functions, such asiter()
andnext()
, are mapped to call the__iter__()
and__next__()
methods on an object, behind the scenes.
Exceptions will be the subject of Chapter...