Now, we have seen how to manipulate namespaces, and to create custom module-loading classes. We can use multiple inheritance to create mixin classes in which each mixin class provides a new functionality to the subclass. Context manager and iterator protocols are very useful constructs to create clean code. We created abstract classes that can help us in setting up API contracts for classes.
In the next chapter, we will cover the functions and utilities that are available to us from a standard Python installation.