Enum em Python

Muhammad Waiz Khan 30 janeiro 2023
  1. Enum em Python usando o módulo enum
  2. Implementar Enum em Python usando uma sintaxe de classe regular
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