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"