Designing classes with lots of processing
Most of the time, an object will contain all of the data that defines its internal state. However, this isn't always true. There are cases where a class doesn't really need to hold the data, but instead can hold the processing.
Some prime examples of this design are statistical processing algorithms, which are often outside the data being analyzed. The data might be in a list
or Counter
object. The processing might be a separate class.
In Python, of course, this kind of processing is often implemented using functions. See Chapter 3, Function Definitions for more information on this. In some languages, all code must take the form of a class, leading to some extra complexity.
How can we design a class that makes use of Python's array of sophisticated built-in collections?
Getting ready
In Chapter 4, Built-in Data Structures – list, set, dict, specifically the Using set methods and operators recipe, we looked at a statistical process called the Coupon Collector...