Python Academy · leksjon

IntEnum og Flag

Bruk heltalls- og flagg-enumtyper

Leksjon 2 av 413 trinn

IntEnum og Flag er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Python Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Python Academy inneholder totalt 4 leksjoner.

Utover vanlig Enum

enum-modulen leveres med spesialiserte basisklasser. Medlemmer av IntEnum oppfører seg som heltall, og medlemmer av Flag kan kombineres med bitvise operatorer. De dekker tilfeller der vanlig Enum blir for begrenset.

Vanlig Enum er ikke en int

Et medlem av vanlig Enum kan ikke brukes om hverandre med heltallsverdien sin. Hvis du sammenligner det med et tall, blir resultatet False.

from enum import Enum

class Level(Enum):
    LOW = 1
    HIGH = 2

print(Level.LOW == 1)

IntEnum sammenlignes som int

Et medlem av IntEnum er et heltall, så det sammenlignes som likt med den numeriske verdien sin og støtter ordning.

from enum import IntEnum

class Level(IntEnum):
    LOW = 1
    HIGH = 2

print(Level.LOW == 1)
print(Level.LOW < Level.HIGH)

IntEnum i aritmetikk

Siden medlemmene er ekte heltall, kan du bruke dem i matematikk og som indekser. Bruk dette når en verdi faktisk må fungere sammen med numerisk kode.

from enum import IntEnum

class Priority(IntEnum):
    LOW = 1
    MEDIUM = 5
    HIGH = 10

print(Priority.HIGH + 1)
print(Priority.MEDIUM * 2)

Sortere IntEnum-medlemmer

Siden IntEnum støtter ordning, sorteres en liste med medlemmer etter verdi uten noen ekstra nøkkelfunksjon.

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 for kombinerbare alternativer

En Flag-enum er laget for verdier som skal kombineres. Tilordne potenser av to, slik at hvert medlem opptar sin egen bit.

from enum import Flag, auto

class Permission(Flag):
    READ = auto()
    WRITE = auto()
    EXECUTE = auto()

print(Permission.READ)
print(Permission.READ.value)

Kombinere flagg med |

Bruk den bitvise OR-operatoren | for å kombinere flagg til én sammensatt verdi.

from enum import Flag, auto

class Permission(Flag):
    READ = auto()
    WRITE = auto()
    EXECUTE = auto()

access = Permission.READ | Permission.WRITE
print(access)

Teste medlemskap med in

Kontroller om et flagg er satt ved hjelp av operatoren in, som utfører den bitvise testen for deg.

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)

Snitt og fjerning

Kombiner flagg med & (AND) for å finne felles biter, og fjern et flagg med & mot komplementet ~.

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 for heltallsflagg

IntFlag kombinerer begge ideene: kombinerbare flagg som også oppfører seg som vanlige heltall, noe som er nyttig ved kommunikasjon med C-API-er eller bitmasker som er lagret som tall.

from enum import IntFlag, auto

class Mode(IntFlag):
    R = 4
    W = 2
    X = 1

m = Mode.R | Mode.W
print(int(m))

Iterere over et sammensatt flagg

Når du itererer over en sammensatt Flag-verdi, får du hvert enkelt flagg den inneholder. Dette er nyttig når du skal liste aktive alternativer.

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)

Kort sjekk

Hvorfor vil du velge en Flag-enum fremfor en vanlig Enum?

Oppsummering

Du har lært om heltalls- og flagg-enum-er.

  • Medlemmer av IntEnum oppfører seg som heltall og støtter ordning og aritmetikk.
  • Medlemmer av Flag kombineres med |, & og ~, og testes med in.
  • IntFlag kombinerer begge egenskapene.
  • Bruk potenser av to for flaggverdier.
Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
76
Leksjoner
320

Ofte stilte spørsmål

Er leksjonen «IntEnum og Flag» gratis?

Ja – hele teksten i «IntEnum og Flag» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Python Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Python Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «IntEnum og Flag»?

Bruk heltalls- og flagg-enumtyper Du øver på Python Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Python Academy?

Ingen tidligere erfaring er nødvendig. Python Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «IntEnum og Flag»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Python Academy-leksjonen?

Ja. Alle Python Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Enum-klassen
  2. IntEnum og Flag
  3. Grunnleggende om NamedTuple
  4. typing.NamedTuple
← Tilbake til Python Academy