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.