Многие методы реализации перечислений показаны в ответах на this question. Тем не менее, PEP0435 отсутствует и описывает, как Enum и IntEnum станут официальными в Python 3.4.Будущие совместимые перечисления в 2.7?
Мой вопрос заключается не в преимуществах/недостатках конкретных способов имитации перечислений в Python. Скорее, я бы хотел получить совет по наиболее передовой возможности для тех из нас, кто все еще придерживался релизов 2.X.
flufl.enum изначально собирался быть эталонной реализацией, но был удален из-за того, что члены не являлись экземплярами типа (и позволяли одновременно создавать подклассы с дополнительными элементами). Последнее не повлияло бы на изо дня в день, но, возможно, первое вызвало бы больше проблем?
Существуют ли библиотеки, которые более похожи на то, что добавляется к 3.4 и совместимы с 2.7+?
Это не проблема. Использование ручных рулонов не будет ломаться, когда выпущены «официальные» перечисления. Кроме того, не используйте перечисления. Это не C. – Marcin
Реализация 3.4 основана на новой функции '__prepare__' в метаклассе, поэтому перенос на 2.7 будет ... проблемой, но back-port вполне может быть возможен. Лучше придерживайтесь своих ручных; они будут продолжать работать, но не совсем имеют все преимущества официального модуля. –
@JoachimSauer По мере того, как язык растет, он получает больше людей, которые менее склонны к адаптации, и поэтому растет число участников для C-подобных конструкций. – Marcin