Some additional abstractions
We'll look at some other interesting ABC classes that are less widely extended. It's not that these abstractions are less widely used. It's more that the concrete implementations rarely need extensions or revisions.
We'll look at the iterator, which is defined by collections.abc.Iterator
. We'll also look at the unrelated idea of a context manager. This isn't defined with the same formality as other ABC classes. We'll look at this in detail in Chapter 5, Using Callables and Contexts.
The iterator abstraction
Iterators are created implicitly when we use an iterable container with a for
statement. We rarely care about the iterator itself. And the few times we do care about the iterator, we rarely want to extend or revise the class definition.
We can expose the implicit iterators that Python uses via the iter()
function. We can interact with an iterator in the following way:
>>> x = [ 1, 2, 3 ] >>> iter(x) <list_iterator object at 0x1006e3c50>...