Во-первых, я знаю, что Enum в Python неизменны.
Я пытаюсь получить перечисление, в котором каждый месяц имеет атрибут, а также другие значения перечисления, например:
class SalesFilter(str, enum.Enum):
this_month = 'this_month'
last_month = 'last_month'
this_year = 'this_year'
last_year = 'last_year'
jan = 'jan'
feb = 'feb'
mar = 'mar'
apr = 'apr'
may = 'may'
jun = 'jun'
jul = 'jul'
aug = 'aug'
sep = 'sep'
oct = 'oct'
nov = 'nov'
dec = 'dec'
Интересно, есть ли способ генерировать эти месяцы динамически, я хотел бы сделать что-то вроде:
import calendar
months = [m.lower() for m in list(calendar.month_abbr)[1:]]
class SalesFilter(str, enum.Enum):
this_month = 'this_month'
last_month = 'last_month'
this_year = 'this_year'
last_year = 'last_year'
for m in months:
setattr(SalesFilter, f'{m}', m)
Есть ли способ сделать это? Может быть, с метаклассами, но я не уверен, с чего начать.