Python 3.4+enumпонятие
enum.IntEnum
виды enum
Перечисление, члены которого — ещё и int: их можно сравнивать с числами и использовать в арифметике.
Синтаксис
class C(enum.IntEnum): ...
Плата за удобство — потеря типовой строгости: член равен обычному числу и любому члену другого IntEnum с тем же значением, поэтому перепутанные перечисления сравниваются молча и без ошибки. С Python 3.11 str() и f-строки печатают у IntEnum голое число, а не Color.RED, — при переезде на новую версию логи и сообщения незаметно меняются. Брать IntEnum стоит ради совместимости с кодом и API, которые ждут int; для внутренней логики обычный Enum безопаснее.
Примеры
import enum
class Color(enum.IntEnum):
RED = 1
GREEN = 2
print(Color.RED == 1) # → True
print(int(Color.GREEN) + 1) # → 3
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности