IntEnum e Flag
Use enumerações de inteiros e sinalizadores
IntEnum e Flag é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.
Além da Enumeração Simples
O módulo enum inclui classes-base especializadas. Os membros de IntEnum se comportam como inteiros, e os membros de sinalizador podem ser combinados com operadores bit a bit. Elas abrangem casos em que Enum simples é restritivo demais.
Enum Simples Não É um Inteiro
Um membro de Enum simples não é intercambiável com seu valor inteiro. Compará-lo com um número retorna False.
from enum import Enum
class Level(Enum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)IntEnum É Comparado como Inteiro
Um membro de IntEnum é um inteiro, portanto é igual ao seu valor numérico e oferece suporte à ordenação.
from enum import IntEnum
class Level(IntEnum):
LOW = 1
HIGH = 2
print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)IntEnum em Operações Aritméticas
Como os membros são inteiros reais, pode usá-los em cálculos e indexações. Use isso quando um valor realmente precisar interoperar com código numérico.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)Ordenando Membros de IntEnum
Como IntEnum oferece suporte à ordenação, uma lista de membros é ordenada por valor sem nenhuma função de chave adicional.
from enum import IntEnum
class Priority(IntEnum):
LOW = 1
MEDIUM = 5
HIGH = 10
for p in sorted([Priority.HIGH, Priority.LOW, Priority.MEDIUM]):
print(p.name)Flag para Opções Combináveis
Uma enumeração Flag é destinada a valores que serão combinados. Atribua potências de dois para que cada membro ocupe seu próprio bit.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
print(Permission.READ)
print(Permission.READ.value)Combinando Sinalizadores com |
Use o operador OR bit a bit | para combinar sinalizadores em um único valor composto.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(access)Testando Pertencimento com o Operador de Inclusão
Verifique se um sinalizador está definido usando o operador in, que executa o teste bit a bit por si só.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
print(Permission.READ in access)
print(Permission.EXECUTE in access)Interseção e Remoção
Combine sinalizadores com & (AND) para encontrar bits comuns e remova um sinalizador com & aplicado ao complemento ~.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.WRITE
still = access & ~Permission.WRITE
print(still)IntFlag para Sinalizadores Inteiros
IntFlag combina as duas ideias: sinalizadores combináveis que também se comportam como inteiros simples, úteis ao interagir com APIs C ou máscaras de bits armazenadas como números.
from enum import IntFlag, auto
class Mode(IntFlag):
R = 4
W = 2
X = 1
m = Mode.R | Mode.W
print(int(m))Percorrendo um Sinalizador Combinado
Percorrer um valor Flag combinado retorna cada sinalizador individual que ele contém, o que é útil para listar as opções ativas.
from enum import Flag, auto
class Permission(Flag):
READ = auto()
WRITE = auto()
EXECUTE = auto()
access = Permission.READ | Permission.EXECUTE
for p in access:
print(p.name)Verificação Rápida
Por que escolheria uma enumeração Flag em vez de uma Enum simples?
Recapitulação
Aprendeu sobre enumerações de inteiros e de sinalizadores.
- Os membros de
IntEnumse comportam como inteiros e oferecem suporte à ordenação e à aritmética. - Os membros de
Flagsão combinados com|,&e~, e testados comin. IntFlagcombina os dois comportamentos.- Use potências de dois para os valores dos sinalizadores.
Perguntas Frequentes
A aula “IntEnum e Flag” é grátis?
Sim — o texto completo de “IntEnum e Flag” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.
O que vou aprender em “IntEnum e Flag”?
Use enumerações de inteiros e sinalizadores Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Python Academy?
Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “IntEnum e Flag”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Python Academy?
Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.