Python Academy · leksjon

Enum-klassen

Definer grupper med navngitte konstanter

Leksjon 1 av 413 trinn

Enum-klassen er en gratis leksjon i Python Academy på CoddyKit. Dette er leksjon 1 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.

Hvorfor enum?

En enum (enumeration) er et sett med navngitte konstantverdier som hører sammen. I stedet for å spre magiske strenger eller tall rundt i koden gir du hver verdi et tydelig navn.

  • Selvforklarende kode.
  • Beskyttelse mot skrivefeil.
  • Et fast og kjent sett med valg.

Definere en Enum

Arv fra Enum og oppgi medlemmene som NAME = value. Konvensjonelt skrives medlemsnavn med store bokstaver.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED)

name og value

Hvert enum-medlem har en .name (identifikatoren) og en .value (den tildelte verdien).

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2

c = Color.GREEN
print(c.name)
print(c.value)

Medlemmer er singletoner

Hvert medlem er et unikt singleton-objekt. Sammenlign medlemmer med is eller ==; det samme medlemmet er alltid nøyaktig det samme objektet.

from enum import Enum

class Color(Enum):
    RED = 1
    BLUE = 2

print(Color.RED is Color.RED)
print(Color.RED == Color.BLUE)

Slå opp med verdi

Kall enum-klassen med en verdi for å hente det tilsvarende medlemmet. En ukjent verdi utløser ValueError.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2

print(Color(2))
try:
    Color(99)
except ValueError as e:
    print('Bad value:', e)

Slå opp med navn

Bruk tilgang med klammeparenteser og medlemsnavnet som streng for å slå opp et medlem etter navn. Dette er nyttig når du leser navn fra konfigurasjon eller brukerinput.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2

print(Color['GREEN'])

Iterere over medlemmer

En enum kan itereres over. En løkke gir hvert medlem i definisjonsrekkefølgen, noe som er nyttig når du lager menyer eller validerer valg.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

for c in Color:
    print(c.name, c.value)

Strengverdier

Enum-verdier er ikke begrenset til heltall. Strenger er vanlige, særlig for verdier som skal serialiseres eller lagres.

from enum import Enum

class Status(Enum):
    ACTIVE = 'active'
    PAUSED = 'paused'
    CLOSED = 'closed'

print(Status.PAUSED.value)
print(Status('closed'))

auto() for verdier

Når de faktiske tallene ikke spiller noen rolle, bruker du auto() til å tilordne verdier automatisk, fra og med 1 og videre oppover.

from enum import Enum, auto

class Direction(Enum):
    NORTH = auto()
    SOUTH = auto()
    EAST = auto()
    WEST = auto()

for d in Direction:
    print(d.name, d.value)

Enum-er i funksjoner

Hvis du bruker enum-er som funksjonsparametere, blir hensikten tydelig og du unngår ugyldige inndata. Sammenlign medlemmene direkte i logikken.

from enum import Enum

class Light(Enum):
    RED = 1
    YELLOW = 2
    GREEN = 3

def can_go(light):
    return light is Light.GREEN

print(can_go(Light.GREEN))
print(can_go(Light.RED))

Medlemmer i en ordbok

Enum-medlemmer er hashbare, så de kan brukes som nøkler i ordbøker. Dette er en ryddig måte å knytte data til hver navngitte konstant på.

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

hex_codes = {Color.RED: '#ff0000', Color.GREEN: '#00ff00'}
print(hex_codes[Color.RED])

Kort sjekk

Hvordan sammenligner du to enum-medlemmer korrekt med hensyn på identitet?

Oppsummering

Du har lært å definere grupper med navngitte konstanter ved hjelp av Enum.

  • Medlemmer har .name og .value.
  • Slå opp med verdi ved hjelp av Color(v), og med navn ved hjelp av Color['NAME'].
  • Enum-er kan itereres over, og medlemmene er singletoner.
  • Bruk auto() når de nøyaktige verdiene ikke spiller noen rolle.
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 «Enum-klassen» gratis?

Ja – hele teksten i «Enum-klassen» 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 «Enum-klassen»?

Definer grupper med navngitte konstanter 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 1 av 4.

Hvor lang tid tar leksjonen «Enum-klassen»?

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