Enum-klassen
Definiera grupper av namngivna konstanter
Enum-klassen är en gratis lektion i Python Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Python Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Python Academy innehåller totalt 4 lektioner.
Varför enum?
En enum (uppräkning) är en uppsättning namngivna konstantvärden som hör ihop. I stället för att sprida magiska strängar eller tal i koden ger Ni varje värde ett tydligt namn.
- Självförklarande kod.
- Skydd mot stavfel.
- En fast och känd uppsättning val.
Definiera en Enum
Skapa en subklass av Enum och ange medlemmarna som NAME = value. Enligt konvention skrivs medlemsnamn med versaler.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
print(Color.RED)name och value
Varje enum-medlem har ett .name (identifieraren) och ett .value (det tilldelade värdet).
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
c = Color.GREEN
print(c.name)
print(c.value)Medlemmar är singleton-objekt
Varje medlem är ett unikt singleton-objekt. Jämför medlemmar med is eller ==; samma medlem är alltid exakt samma objekt.
from enum import Enum
class Color(Enum):
RED = 1
BLUE = 2
print(Color.RED is Color.RED)
print(Color.RED == Color.BLUE)Slå upp med värde
Anropa enum-klassen med ett värde för att hämta den matchande medlemmen. Ett okänt värde 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å upp med namn
Använd hakparenteser med strängen som innehåller medlemsnamnet för att slå upp en medlem med namn. Det är praktiskt när Ni läser namn från konfiguration eller användarinmatning.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
print(Color['GREEN'])Iterera över medlemmar
En enum kan itereras över. En loop ger varje medlem i den ordning de definierades, vilket passar utmärkt för att bygga menyer eller validera alternativ.
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
for c in Color:
print(c.name, c.value)Strängvärden
Enum-värden är inte begränsade till heltal. Strängar är vanliga, särskilt för värden som ska serialiseras eller lagras.
from enum import Enum
class Status(Enum):
ACTIVE = 'active'
PAUSED = 'paused'
CLOSED = 'closed'
print(Status.PAUSED.value)
print(Status('closed'))auto() för värden
När de faktiska talen inte spelar någon roll använder Ni auto() för att tilldela värden automatiskt, med början på 1 och sedan uppåt.
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 i funktioner
Om Ni använder enum-värden som funktionsparametrar blir avsikten tydlig och ogiltig indata förhindras. Jämför medlemmarna direkt i logiken.
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))Medlemmar i en dictionary
Enum-medlemmar är hashbara, så de kan användas som nycklar i en dictionary. Det är ett tydligt sätt att koppla data till varje namngiven konstant.
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])Snabb kontroll
Hur jämför Ni korrekt två enum-medlemmar med avseende på identitet?
Sammanfattning
Ni har lärt Er att definiera namngivna konstantgrupper med Enum.
- Medlemmar har
.nameoch.value. - Slå upp med värde med
Color(v)och med namn medColor['NAME']. - Enum-värden kan itereras över och medlemmarna är singleton-objekt.
- Använd
auto()när de exakta värdena inte spelar någon roll.
Lär dig Python med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 76
- Lektioner
- 320
Vanliga frågor
Är lektionen ”Enum-klassen” gratis?
Ja – hela texten till ”Enum-klassen” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Python Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Python Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”Enum-klassen”?
Definiera grupper av namngivna konstanter Ni övar på Python Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Python Academy?
Du behöver inga förkunskaper. Utbildningen i Python Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.
Hur lång tid tar lektionen ”Enum-klassen”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Python Academy-lektionen?
Ja. Varje Python Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.