Enum em Python
Neste tutorial, examinaremos diferentes métodos de uso ou implementação do enum
em Python. O enum
ou enumeração é um tipo especial de classe que representa um conjunto de constantes nomeadas de tipo numérico. Cada constante nomeada no tipo enum
tem seu próprio valor inteiro, que depende da posição da constante nomeada do conjunto.
O tipo enum
é usado para atribuir os nomes de constantes ao conjunto de valores inteiros em muitas linguagens de programação como C#, Java, Go, C e C++, etc. Podemos implementar e usar o tipo de enumeração em Python usando os métodos que são explicados abaixo.
Enum em Python usando o módulo enum
O módulo enum
do Python possui quatro classes que são Enum
, IntEnum
, Flag
e IntFlag
, para mais detalhes sobre o módulo e as classes, este link pode ser visitado.
Na classe Enum
, o valor de cada constante de nome é um inteiro por padrão, mas também podemos passar tipos de dados como string ou float, etc. Os valores das constantes de nome da classe IntEnum
, como o nome sugere, podem ser apenas inteiros.
Podemos criar e usar a enumeração em Python usando as classes Enum
e IntEnum
. Os códigos de exemplo a seguir demonstram como usar essas classes para implementar diferentes tipos de enumeradores em Python.
Enumerador simples:
from enum import Enum
Names = Enum("Names", ["Waiz", "Tom", "Sara", "Lee"])
Podemos usar o iterador do par (nome, valor)
para salvar valores específicos com cada nome, representando id ou marcas, etc., das constantes de nome. Podemos acessar o valor da constante de nome e o nome usando Enum.nameconstant.value
para acessar os valores e Enum.nameconstant.name
para acessar os nomes.
Podemos fazer isso em Python usando o código de exemplo abaixo.
from enum import Enum
Names = Enum("Names", [("Waiz", 8), ("Tom", 5), ("Sara", 7), ("Lee", 6)])
print(Names.Sara.value)
print(Names.Waiz.name)
Resultado:
7
Waiz
Outra maneira de criar um enumerador é usando a sintaxe da classe e, em seguida, passando o Enum
ou IntEnum
conforme mostrado no código de exemplo abaixo:
from enum import IntEnum
class Student(IntEnum):
Waiz = 1
Ali = 2
John = 3
Lee = 4
print(Student.Lee.value)
Resultado:
4
Implementar Enum em Python usando uma sintaxe de classe regular
Em versões Python anteriores a 2.4, o módulo Enum
não está disponível, nesse caso, podemos implementar nossa própria class
do enumerador Enum
usando a sintaxe de classe.
Podemos implementar a classe de enumerador simples com os valores padrão começando em 1
como na classe Enum
do módulo enum
, conforme demonstrado no código de exemplo abaixo:
class Zoo:
Lion, Tiger, Cheetah, Leopard = range(1, 5)
print Zoo.Lion
Resultado:
1