Enums (enumerations) er en måte å definere en datatype som kun kan ha et begrenset sett med forhåndsdefinerte verdier. Dette gjør det enklere å unngå feil ved at en variabel kun kan ha gyldige verdier.
Enums brukes strengt talt ikke til validering, men de hjelper oss med å begrense hvilke verdier som er gyldige for en variabel, og dermed kan de bidra til å forhindre feil.
For eksempel, hvis du har en klasse som representerer en bil, kan du bruke en Enum for å definere hvilke farger bilen kan ha:
from enum import Enum
class CarColor(Enum):
RED = "red"
BLUE = "blue"
GREEN = "green"
BLACK = "black"
WHITE = "white"
class Car:
def __init__(self, make: str, model: str, year: int, color: CarColor):
self.make = make
self.model = model
self.year = year
self.color = color
Hvorfor?
Vår IDE gir bedre autocompletion når vi bruker enums, og vi unngår (gjør det vanskelig) å sette ugyldige verdier. Hvis vi prøver å tilordne en farge som ikke er definert i CarColor, vil Python kaste en feil. Dette gjør koden mer robust og enklere å vedlikeholde. Jo færre mulige feil som kan oppstå, desto bedre kvalitet får vi på koden.
Se for deg at vi har en funksjon som håndterer betalingsmetoder: PayPal, VISA, MASTERCARD og BITCOIN. Ved å bruke en Enum for betalingsmetoder, kan vi sikre at funksjonen kun mottar gyldige betalingsmetoder, og ikke "MASTERCARDD" eller "CASH", som kan føre til feil i programmet.
Oppgave 1 - Lag en Enum
Lag en Enum som heter EyeColor og implementer denne i Person klassen fra forrige modul. EyeColor skal ha følgende verdier:
BLUEBROWNGREENHAZEL
Enum blir mye brukt i spillutvikling
Dersom du slår opp i dokumentasjonen til ulike spill, så vil du ofte se at de bruker Enums for å definere ting som våpen, fiender, nivåer og lignende. Dette er fordi det gjør det enklere å håndtere slike ting i koden, og det gjør det lettere å unngå feil.

