Enums

Skip to content

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.

Enum Meme

Easy 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:

  • BLUE
  • BROWN
  • GREEN
  • HAZEL

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.

https://learn.microsoft.com/en-us/minecraft/creator/scriptapi/minecraft/server/blockpistonstate?view=minecraft-bedrock-stable

Congrats you now understand enums