Summary
In this chapter, we have learned how to create metaclasses and some applications of metaclasses.
We then saw how to switch metaclasses, reuse the functionalities, and how to implement inheritance on classes that use metaclasses. Finally, we also saw how to manipulate the variables of metaclasses further.
All of these concepts are part of Python metaprogramming and they are used to change the behavior of a class externally and without impacting the internal functionalities of the class itself.
In the next chapter, we will be looking at the concept of reflection with different examples.