Было несколько вопросов о том, как реализовать перечисления в Python. Большинство решений в конечном итоге более или менее эквивалентны примерно так:
class Animal:
DOG=1
CAT=2
Другие предлагают более сложные способы построения перечислений, но, как правило, они выглядят как этот пример, когда все сказано и сделано.
Основываясь на моем опыте работы на Java и С#, я могу думать обо всех видах использования для такой идиомы. Однако, похоже, это не очень Pythonic. На самом деле, кажется, что каждый раз, когда кто-то спрашивает, почему в Python нет перечислений, вы, как правило, получаете немного стона с законченными ответами о том, как нет причин попробовать и обеспечить безопасность типа времени компиляции на языке, таком как Python, или как проекты, которые требуют перечислений, являются плохими запахами в Python.
Мой вопрос заключается не в том, как реализовать перечисления в Python, а в том, как в целом люди подходят к решениям проблем, которые поддаются перечислениям на языке Pythonic. Другими словами, как бы вы решили проблему, которая поддается типу данных с дискретным набором возможных значений без переноса вашего решения Java/С# на Python.