Класс является пространством имён для своих констант. Ты вообще понимаешь, что в разных классах могут быть константы с одинаковыми именами, но с разными значениями? Предложения вынести всё из класса в модуль тоже вызывают подозрения, что ты не понимаешь, что делаешь.
Да, я понимаю, что в разных классах могут быть константы с одинаковыми именами и разными значениями (класс выступает в роли контейнера). Но и в разных модулях могут быть константы с одинаковыми именами и разными значениями (тоже контейнер). Чем первое решение лучше второго?
state должно храниться в экземпляре, потому что у меня будет работать одновременно несколько объектов с разными state- ами. Под константой я понимаю общее значение для всех экземляров (например, настройки работы объектов), а не отдельно взятого (если бы я этого не понимал, то предложил бы хранить в модуле все члены объекта, а не только константные).
То ты теряешь модульный функционал.А это что такое? В каждом модуле у меня будет только по 1 классу (это хорошая практика программирования). Я не хочу заниматься метапрограммированием, меня интересует только работа с классом, импортированным из модуля (который по сути будет представлять интерфейс, поскольку все внутренности из него выброшены в модуль). Поэтому не вижу проблем в предложенном решении при такой парадигме программирования. Программа пишется для конкретной цели без желания создавать переносимые пакеты.