A mixin is a base class that encapsulates some common behavior with the goal of reusing code. Typically, a mixin class is not useful on its own, and extending this class alone will certainly not work, because most of the time it depends on methods and properties that are defined in other classes. The idea is to use mixin classes along with other ones, through multiple inheritance, so that the methods or properties used on the mixin will be available.
Imagine we have a simple parser that takes a string and provides iteration over it by its values separated by hyphens (-):
class BaseTokenizer: def __init__(self, str_token): self.str_token = str_token def __iter__(self): yield from self.str_token.split("-")
This is quite straightforward: ...