Если класс — фабрика объектов, то метакласс играет роль фабрики самих классов. В Python 3 это не опция, а дефолт: любой ваш класс является экземпляром
type, а class Foo: pass раскрывается в type('Foo', (), {}).Свой метакласс наследуется от
type и переопределяет __new__ или __init__. Он позволяет собирать, изменять или регистрировать классы программно, но в Python явность важнее изящества. В большинстве случаев ту же задачу решают наследование или декоратор класса.Отсюда следует, почему в Python всё есть объект, включая само определение класса. Разбираемся в деталях.
