У меня есть друг, который любит использовать метаклассы и регулярно предлагает их в качестве решения.
Я считаю, что вам почти никогда не нужно использовать метаклассы. Зачем? потому что я думаю, что если вы делаете что-то подобное с классом, вам, вероятно, следует делать это с объектом. И небольшой редизайн/рефакторинг в порядке.
Возможность использовать метаклассы заставила многих людей во многих местах использовать классы как некий второстепенный объект, что мне просто кажется катастрофическим. Нужно ли заменять программирование на метапрограммирование? К сожалению, добавление декораторов класса сделало его еще более приемлемым.
Поэтому, пожалуйста, я отчаянно желаю знать ваши действительные (конкретные) варианты использования метаклассов в Python. Или быть просвещенным относительно того, почему мутирующие классы лучше, чем мутирующие объекты, иногда.
Я начну:
Иногда при использовании сторонней библиотеки полезно иметь возможность мутировать класс определенным образом.
(Это единственный случай, о котором я могу подумать, и он не конкретный)