Enumerasjoner i Python

Enumerasjoner i Python

Denne artikkelen forklarer enumerasjoner i Python.

YouTube Video

Enumerasjoner i Python

enum i Python er en spesiell klasse for å definere konstanter, som forbedrer lesbarheten og hjelper til med å forhindre kodefeil.

Hva er en Enum?

Enum (kort for enumerasjon) er en klasse som brukes til å definere et sett med navngitte konstanter. Det brukes vanligvis til å gruppere relaterte konstanter sammen. For eksempel er det egnet til å representere farger, ukedager eller retninger.

Hvorfor bruke Enum?

Det finnes flere grunner til å bruke Enum.

  • Forbedret lesbarhet: Bruk av navngitte konstanter gjør koden mer intuitiv.
  • Forebygging av feil: Det hindrer endringer eller feilbruk av konstantverdier.
  • Gruppering: Det organiserer relaterte konstanter i en enkelt klasse, som representerer strukturerte data.

Grunnleggende bruk av Enum

For å bruke enum importeres enum-modulen, og en klasse defineres. Klassen bør arve fra Enum og definere verdiene du vil behandle som konstanter.

Grunnleggende eksempel på Enum

 1from enum import Enum
 2
 3class Color(Enum):
 4    RED = 1
 5    GREEN = 2
 6    BLUE = 3
 7
 8# Usage of Enum
 9print(Color.RED)        # Color.RED
10print(Color.RED.name)   # RED
11print(Color.RED.value)  # 1

I dette eksemplet definerer vi en Enum-klasse kalt Color med tre verdier. Hvert navn kan nås via name-attributtet, og tilhørende verdi kan nås via value-attributtet.

Sammenligning av Enums

Enum-medlemmer kan sammenlignes enten etter navn eller verdi. Du kan bruke is-operatoren eller ==-operatoren for å sjekke identitet og likhet.

Eksempel på sammenligning

 1from enum import Enum
 2
 3class Direction(Enum):
 4    NORTH = 1
 5    SOUTH = 2
 6    EAST = 3
 7    WEST = 4
 8
 9# Equality comparison
10print(Direction.NORTH == Direction.SOUTH)  # False
11print(Direction.NORTH == Direction.NORTH)  # True
12
13# Identity comparison using is
14print(Direction.NORTH is Direction.SOUTH)  # False
15print(Direction.NORTH is Direction.NORTH)  # True

Her demonstreres sammenligninger av Enum ved hjelp av == og is. Enum er designet for å sammenligne objekter med samme navn og verdi på riktig måte.

Automatisk tildeling av verdi med auto()

Hvis du vil automatisk tildele verdier til Enum-medlemmer, kan du bruke enum.auto(). auto() lar Python automatisk tildele verdier, noe som fjerner behovet for at utviklere spesifiserer dem manuelt.

Eksempel på auto()

 1from enum import Enum, auto
 2
 3class Animal(Enum):
 4    DOG = auto()
 5    CAT = auto()
 6    MOUSE = auto()
 7
 8# Check the values of Enum
 9print(Animal.DOG.value)    # 1
10print(Animal.CAT.value)    # 2
11print(Animal.MOUSE.value)  # 3

I dette eksempelet fjerner bruken av auto() behovet for å spesifisere verdier eksplisitt, og gjør koden mer kortfattet.

Tildele flere verdier til Enum-medlemmer

Enum-medlemmer kan også inneholde flere verdier, for eksempel tupler. Dette gjør at hvert medlem kan inneholde tilleggsinformasjon som er relatert.

Eksempel med bruk av tupler

 1from enum import Enum
 2
 3class Status(Enum):
 4    ACTIVE = (1, 'Active user')
 5    INACTIVE = (2, 'Inactive user')
 6    SUSPENDED = (3, 'Suspended user')
 7
 8# Accessing Enum members
 9print(Status.ACTIVE.name)    # ACTIVE
10print(Status.ACTIVE.value)   # (1, 'Active user')
11print(Status.ACTIVE.value[1])  # Active user

I dette eksempelet har medlemmene i Status-klassen to verdier hver, som representerer tilstand og beskrivelse. Dette er nyttig når du vil knytte flere informasjonsbiter til et Enum-medlem.

Bruke Enum som flagg

Pythons enum inkluderer en Flag-klasse som kan brukes som bitflagg. Bruk av Flag lar deg håndtere flere tilstander i kombinasjon.

Eksempel på Flag

 1from enum import Flag, auto
 2
 3class Permission(Flag):
 4    READ = auto()
 5    WRITE = auto()
 6    EXECUTE = auto()
 7
 8# Combining flags
 9permission = Permission.READ | Permission.WRITE
10print(permission)                 # Permission.READ|WRITE
11print(Permission.EXECUTE in permission)  # False

I dette eksempelet brukes bitvise operasjoner for å kombinere flere tillatelser. Bruk av Flag lar deg håndtere flere tilstander på en kortfattet måte.

Punkter å huske på når du bruker Enum

Uforanderlighet av Enum

Enum-medlemmer er uforanderlige. Når de først er definert, kan ikke deres navn eller verdier endres. Dette er en viktig egenskap for å opprettholde konsistens som konstanter.

1from enum import Enum
2
3class Days(Enum):
4    MONDAY = 1
5    TUESDAY = 2
6
7# Example of immutability
8# Days.MONDAY = 3  # AttributeError: Cannot reassign members.

Forbud mot dupliserte medlemmer

Enum-medlemmer må ha unike navn og verdier. Selv når duplikatverdier er tillatt, prioriterer Python automatisk det første medlemmet.

Sammendrag

Pythons enum-modul er et svært nyttig verktøy for å gruppere sett med konstanter, forbedre lesbarheten og opprettholde kodekonsistens. Det er mange bruksområder, fra grunnleggende bruk til automatisk verdiutdeling med auto() og bruk som bitflagg.

Å forstå og mestre enum på riktig måte kan forbedre kodekvaliteten og bidra til å forhindre feil.

Du kan følge med på artikkelen ovenfor ved å bruke Visual Studio Code på vår YouTube-kanal. Vennligst sjekk ut YouTube-kanalen.

YouTube Video