Skip to content Skip to sidebar Skip to footer

Difference Between Enum And Intenum In Python

I came across a code that looked like this: class State(IntEnum): READY = 1 IN_PROGRESS = 2 FINISHED = 3 FAILED = 4 and I came to the conclusion that this State cl

Solution 1:

From the python Docs:

Enum: Base class for creating enumerated constants.

and:

IntEnum: Base class for creating enumerated constants that are also subclasses of int.

it says that members of an IntEnum can be compared to integers; by extension, integer enumerations of different types can also be compared to each other.

look at the below example:

class Shape(IntEnum):
    CIRCLE = 1
    SQUARE = 2class Color(Enum):
    RED = 1
    GREEN = 2

Shape.CIRCLE == Color.RED
>> False

Shape.CIRCLE == 1
>>True

and they will behave same as an integer:

['a', 'b', 'c'][Shape.CIRCLE]
>>'b'

Solution 2:

IntEnum is used to insure that members must be integer i.e.

classState(IntEnum):
  READY ='a'
  IN_PROGRESS = 'b'
  FINISHED = 'c'
  FAILED = 'd'

This will raise an exception:

ValueError: invalid literal forint() withbase 10: 'a'

Solution 3:

intEnum give the following advantages:

1/ Ensure the members must integer

(ValueError: invalid literal for int() with base 10 will be raise if not satisfied)

2/ Allow comparision with integer

importenumclassShape(enum.IntEnum):
    CIRCLE =1
    SQUARE = 2classColor(enum.Enum):
    RED = 1
    GREEN = 2print(Shape.CIRCLE == 1)
# >> True

print(Color.RED == 1)
# >> False

Post a Comment for "Difference Between Enum And Intenum In Python"