Enumeraties in Python
Dit artikel legt uit wat enumeraties in Python zijn.
YouTube Video
Enumeraties in Python
Enum
in Python is een speciale klasse voor het definiëren van constanten, het verbeteren van de leesbaarheid en het helpen voorkomen van programmeerfouten.
Wat is een Enum
?
Enum
(afkorting van enumeratie) is een klasse die wordt gebruikt om een reeks benoemde constanten te definiëren. Het wordt meestal gebruikt om gerelateerde constanten te groeperen. Het is bijvoorbeeld geschikt voor het representeren van kleuren, dagen van de week of richtingen.
Waarom Enum
gebruiken?
Er zijn verschillende redenen om Enum
te gebruiken.
- Betere leesbaarheid: Het gebruik van benoemde constanten maakt de code intuïtiever.
- Voorkomen van fouten: Het voorkomt wijzigingen of onjuist gebruik van constante waarden.
- Groepering: Het organiseert gerelateerde constanten in een enkele klasse, wat gestructureerde data vertegenwoordigt.
Basale toepassingen van Enum
Om enum
te gebruiken, importeert u de enum
module en definieert u een klasse. De klasse moet overerven van Enum
en de waarden definiëren die u als constanten wilt gebruiken.
Basale voorbeelden van 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
In dit voorbeeld definiëren we een Enum
klasse genaamd Color
met drie waarden. Elke naam kan worden opgevraagd via het name
attribuut en de bijbehorende waarde via het value
attribuut.
Enumeraties vergelijken
Enum
leden kunnen worden vergeleken aan de hand van naam of waarde. U kunt de is
operator of de ==
operator gebruiken om identiteit en gelijkheid te controleren.
Vergelijkingsvoorbeeld
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
Hier worden vergelijkingen van Enum
met behulp van ==
en is
gedemonstreerd. Enum
is ontworpen om objecten met dezelfde namen en waarden correct te vergelijken.
Automatische waarde-toewijzing met auto()
.
Als je automatisch waarden wilt toewijzen aan Enum
-leden, kun je enum.auto()
gebruiken. auto()
laat Python automatisch waarden toewijzen, waardoor handmatige specificatie door ontwikkelaars overbodig wordt.
Voorbeeld van 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
In dit voorbeeld elimineert het gebruik van auto()
de noodzaak om expliciet waarden te specificeren, waardoor de code compacter wordt.
Meerdere waarden toewijzen aan Enum
-leden.
Enum
-leden kunnen ook meerdere waarden bevatten, zoals tuples. Dit stelt elk lid in staat om aanvullende gerelateerde informatie vast te houden.
Voorbeeld met tuples.
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
In dit voorbeeld hebben de leden van de Status
-klasse elk twee waarden, die staan voor status en beschrijving. Dit is handig wanneer je meerdere stukken informatie aan een Enum
-lid wilt koppelen.
Enum
gebruiken als vlaggen.
Python's enum
bevat een Flag
-klasse die kan worden gebruikt als bitvlaggen. Met Flag
kun je meerdere staten in combinatie beheren.
Voorbeeld van 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
In dit voorbeeld worden bitwise-bewerkingen gebruikt om meerdere permissies te combineren. Het gebruik van Flag
stelt je in staat om meerdere staten beknopt te beheren.
Punten om in gedachten te houden bij het gebruik van Enum
.
Onveranderlijkheid van Enum
.
Enum
-leden zijn onveranderlijk. Eenmaal gedefinieerd, kunnen hun namen of waarden niet worden gewijzigd. Dit is een belangrijke eigenschap om consistentie als constanten te behouden.
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.
Verbod op dubbele leden.
Enum
-leden moeten unieke namen en waarden hebben. Zelfs wanneer dubbele waarden zijn toegestaan, geeft Python automatisch prioriteit aan het eerste lid.
Samenvatting
De enum
-module van Python is een uiterst nuttig hulpmiddel voor het groeperen van sets constanten, het verbeteren van de leesbaarheid en het handhaven van codeconsistentie. Een verscheidenheid aan toepassingen is mogelijk, van basisgebruik tot automatische toewijzing van waarden met auto()
en gebruik als bitvlaggen.
Het goed begrijpen en beheersen van enum
kan de codekwaliteit verbeteren en helpen fouten te voorkomen.
Je kunt het bovenstaande artikel volgen met Visual Studio Code op ons YouTube-kanaal. Bekijk ook het YouTube-kanaal.