Enumerações em Python
Este artigo explica as enumerações em Python.
YouTube Video
Enumerações em Python
O enum
do Python é uma classe especial para definir constantes, melhorar a legibilidade e ajudar a evitar erros de codificação.
O que é um Enum
?
Enum
(abreviação de enumeração) é uma classe usada para definir um conjunto de constantes nomeadas. Ele é geralmente usado para agrupar constantes relacionadas. Por exemplo, é adequado para representar cores, dias da semana ou direções.
Por que usar Enum
?
Existem várias razões para usar Enum
.
- Melhora na legibilidade: Usar constantes nomeadas torna o código mais intuitivo.
- Prevenção de bugs: Impede alterações ou uso inadequado de valores constantes.
- Agrupamento: Organiza constantes relacionadas em uma única classe, representando dados estruturados.
Uso básico de Enum
Para usar enum
, importe o módulo enum
e defina uma classe. A classe deve herdar de Enum
e definir os valores que você deseja tratar como constantes.
Exemplo básico de Enum
1from enum import Enum
2
3class Color(Enum):
4 RED = 1
5 GREEN = 2
6 BLUE = 3
7
8# Usage of Enum
9print(Color.RED) # Color.RED
10print(Color.RED.name) # RED
11print(Color.RED.value) # 1
Neste exemplo, definimos uma classe Enum
chamada Color
com três valores. Cada nome pode ser acessado via o atributo name
, e seu valor associado pode ser acessado via o atributo value
.
Comparando Enums
Os membros de Enum
podem ser comparados pelo nome ou pelo valor. Você pode usar o operador is
ou o operador ==
para verificar identidade e igualdade.
Exemplo de comparação
1from enum import Enum
2
3class Direction(Enum):
4 NORTH = 1
5 SOUTH = 2
6 EAST = 3
7 WEST = 4
8
9# Equality comparison
10print(Direction.NORTH == Direction.SOUTH) # False
11print(Direction.NORTH == Direction.NORTH) # True
12
13# Identity comparison using is
14print(Direction.NORTH is Direction.SOUTH) # False
15print(Direction.NORTH is Direction.NORTH) # True
Aqui, são demonstradas comparações de Enum
usando ==
e is
. Enum
é projetado para comparar corretamente objetos com os mesmos nomes e valores.
Atribuição automática de valores com auto()
Se você deseja atribuir valores automaticamente aos membros de Enum
, pode usar enum.auto()
. auto()
permite que o Python atribua valores automaticamente, eliminando a necessidade de especificação manual por parte dos desenvolvedores.
Exemplo de auto()
1from enum import Enum, auto
2
3class Animal(Enum):
4 DOG = auto()
5 CAT = auto()
6 MOUSE = auto()
7
8# Check the values of Enum
9print(Animal.DOG.value) # 1
10print(Animal.CAT.value) # 2
11print(Animal.MOUSE.value) # 3
Neste exemplo, usar auto()
elimina a necessidade de especificar valores explicitamente, tornando o código mais conciso.
Atribuindo vários valores aos membros de Enum
Os membros de Enum
também podem conter vários valores, como tuplas. Isso permite que cada membro contenha informações adicionais relacionadas.
Exemplo usando tuplas
1from enum import Enum
2
3class Status(Enum):
4 ACTIVE = (1, 'Active user')
5 INACTIVE = (2, 'Inactive user')
6 SUSPENDED = (3, 'Suspended user')
7
8# Accessing Enum members
9print(Status.ACTIVE.name) # ACTIVE
10print(Status.ACTIVE.value) # (1, 'Active user')
11print(Status.ACTIVE.value[1]) # Active user
Neste exemplo, os membros da classe Status
possuem dois valores cada, representando o estado e a descrição. Isso é útil quando você deseja associar várias informações a um membro de Enum
.
Usando Enum
como bandeiras
O enum
do Python inclui uma classe Flag
que pode ser usada como bandeiras de bits. Usar Flag
permite gerenciar múltiplos estados em combinação.
Exemplo de Flag
1from enum import Flag, auto
2
3class Permission(Flag):
4 READ = auto()
5 WRITE = auto()
6 EXECUTE = auto()
7
8# Combining flags
9permission = Permission.READ | Permission.WRITE
10print(permission) # Permission.READ|WRITE
11print(Permission.EXECUTE in permission) # False
Neste exemplo, operações bit a bit são usadas para combinar várias permissões. Usar Flag
permite que você gerencie múltiplos estados de forma sucinta.
Pontos a serem lembrados ao usar Enum
Imutabilidade de Enum
Os membros de Enum
são imutáveis. Uma vez definidos, seus nomes ou valores não podem ser alterados. Essa é uma característica importante para manter a consistência como constantes.
1from enum import Enum
2
3class Days(Enum):
4 MONDAY = 1
5 TUESDAY = 2
6
7# Example of immutability
8# Days.MONDAY = 3 # AttributeError: Cannot reassign members.
Proibição de membros duplicados
Os membros de um Enum
devem ter nomes e valores exclusivos. Mesmo quando valores duplicados são permitidos, o Python prioriza automaticamente o primeiro membro.
Resumo
O módulo enum
do Python é uma ferramenta altamente útil para agrupar conjuntos de constantes, melhorar a legibilidade e manter a consistência do código. Uma variedade de usos é possível, desde o uso básico até a atribuição automática de valores usando auto()
, bem como a utilização como bandeiras binárias (bit flags).
Compreender e dominar adequadamente o enum
pode melhorar a qualidade do código e ajudar a prevenir erros.
Você pode acompanhar o artigo acima usando o Visual Studio Code em nosso canal do YouTube. Por favor, confira também o canal do YouTube.