0Pricing
Python Academy · Aula

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 IntEnum se comportam como inteiros e oferecem suporte à ordenação e à aritmética.
  • Os membros de Flag são combinados com |, & e ~, e testados com in.
  • IntFlag combina 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.

Todas as aulas deste curso

  1. A classe Enum
  2. IntEnum e Flag
  3. Noções básicas de NamedTuple
  4. typing.NamedTuple
← Voltar para Python Academy