Подтвердить что ты не робот

Будущие совместимые перечисления в 2.7?

В ответах на этот вопрос показаны многие методы реализации перечислений. Однако PEP0435 отсутствует и описывает, как Enum и IntEnum станут официальными в Python 3.4.

Мой вопрос заключается не в преимуществах/недостатках конкретных способов имитации перечислений в Python. Скорее, я бы хотел получить совет по наиболее передовой возможности для тех из нас, кто все еще придерживался релизов 2.X.

flufl.enum изначально собирался быть эталонной реализацией, но был удален из-за того, что члены не являлись экземплярами типа (и позволяли одновременно создавать подклассы с дополнительными элементами). Последнее не повлияло бы изо дня в день, но, возможно, первое вызвало бы больше проблем?

Есть ли там библиотеки, которые более похожи на то, что добавляется в 3.4, и совместимы с 2.7 +?

4b9b3361

Ответ 1

В PyPI имеется backport модуля перечисления PEP 435, который enum34. Бэкпорт кажется неофициальным, однако он является автором Этана Фурмана, который является явным коммиттером Python и одним из соавторов PEP 435.

Бэкпорт объявлен совместимым с Python 2.4 и выше. Конечно, в Python 2 есть несколько, относительно незначительных различий в поведении, но из моего предварительного исследования в Pyhon 2.7 я бы сказал, что уровень совместимости на прямом уровне довольно высок.

Ответ 2

В зависимости от вашего варианта использования вы можете уйти с помощью этой библиотеки, которая также позволяет соответствие шаблону.