Metaclasses allow you to deeply modify the behaviour of Python classes (in terms of how they're defined, instantiated, accessed, and more) by replacing the type
metaclass that new classes use by default.
When designing your architecture, consider that many things which can be accomplished with metaclasses can also be accomplished using more simple semantics:
__init_subclass__()
which allows a class to partake in the creation of its subclass.