Mga Enumerasyon sa Python
Ipinaliliwanag ng artikulong ito ang mga enumerasyon sa Python.
YouTube Video
Mga Enumerasyon sa Python
Ang enum
ng Python ay isang espesyal na klase para sa pagtukoy ng mga konstante, nagpapahusay ng pagbasa, at tumutulong upang maiwasan ang mga pagkakamali sa code.
Ano ang Enum
?
Ang Enum
(maikling bersyon ng enumeration) ay isang klase na ginagamit upang tukuyin ang isang hanay ng mga pinangalanang konstante. Karaniwang ginagamit ito upang pagsamahin ang magkakaugnay na mga konstante. Halimbawa, angkop ito para sa pagsasakatawan ng mga kulay, araw ng linggo, o direksyon.
Bakit gagamit ng Enum
?
Mayroong ilang mga dahilan upang gamitin ang Enum
.
- Pinahusay na pagbasa: Ang paggamit ng mga pinangalanang konstante ay nagpapalinaw sa code.
- Pag-iwas sa mga bug: Iniiwasan nitong mabago o magamit ng mali ang halaga ng mga konstante.
- Pagpapangkat: Inaayos nito ang magkakaugnay na mga konstante sa isang solong klase, na kumakatawan sa nakaayos na datos.
Pangunahing paggamit ng Enum
Upang gumamit ng enum
, i-import ang enum
module at tukuyin ang isang klase. Ang klase ay dapat magmana mula sa Enum
at tukuyin ang mga halagang nais mong ituring bilang mga konstante.
Pangunahin halimbawa ng 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
Sa halimbawang ito, tumukoy kami ng isang Enum
class na tinatawag na Color
na may tatlong halaga. Maaaring ma-access ang bawat pangalan sa pamamagitan ng attribute na name
, at ang kaugnay na halaga nito ay maaaring ma-access sa pamamagitan ng attribute na value
.
Paghahambing ng mga Enum
Ang mga miyembro ng Enum
ay maaaring ihambing sa pamamagitan ng pangalan o halaga. Maaari mong gamitin ang operator na is
o ang operator na ==
upang suriin ang pagkakakilanlan at pagkakapantay.
Halimbawa ng Paghahambing
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
Narito ang mga paghahambing ng Enum
gamit ang ==
at is
ay ipinapakita. Ang Enum
ay idinisenyo upang maayos na maikumpara ang mga bagay na may parehong pangalan at halaga.
Awtomatikong paglalaan ng halaga gamit ang auto()
Kung gusto mong awtomatikong magtalaga ng mga halaga sa mga miyembro ng Enum
, maaari mong gamitin ang enum.auto()
. Pinapayagan ng auto()
ang Python na awtomatikong magtalaga ng mga halaga, inaalis ang pangangailangang manu-manong pagtukoy ng mga developer.
Halimbawa ng 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
Sa halimbawang ito, ang paggamit ng auto()
ay nag-aalis ng pangangailangan na tahasang tukuyin ang mga halaga, ginagawa itong mas maigsi.
Pagtatalaga ng maraming halaga sa mga miyembro ng Enum
Maaaring magkaroon ng maraming halaga ang mga miyembro ng Enum
, tulad ng tuples. Pinapayagan nito ang bawat miyembro na magkaroon ng dagdag na kaugnay na impormasyon.
Halimbawa gamit ang 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
Sa halimbawang ito, ang mga miyembro ng klase na Status
ay may tig-dalawang halaga, na kumakatawan sa estado at deskripsyon. Ito ay kapaki-pakinabang kapag gusto mong iugnay ang maraming impormasyon sa isang miyembro ng Enum
.
Paggamit ng Enum
bilang mga bandera (flags)
Ang enum
ng Python ay may kasamang klase na Flag
na maaaring gamitin tulad ng mga bit flags. Ang paggamit ng Flag
ay nagbibigay-daan upang mapamahalaan ang maraming estado nang magkasama.
Halimbawa ng 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
Sa halimbawang ito, ang mga bitwise na operasyon ay ginagamit upang pagsamahin ang maraming pahintulot. Pinapadali ng paggamit ng Flag
ang pamamahala ng maraming estado.
Mga bagay na dapat tandaan kapag gumagamit ng Enum
Hindi nababago ng Enum
Ang mga miyembro ng Enum
ay hindi nababago. Sa sandaling ma-define, ang kanilang mga pangalan o halaga ay hindi maaaring baguhin. Ito ay mahalagang katangian upang mapanatili ang pagkakapare-pareho bilang mga constant.
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.
Pagbabawal sa mga duplikadong miyembro
Ang mga miyembro ng Enum
ay dapat magkaroon ng natatanging mga pangalan at halaga. Kahit na pinapayagan ang mga ulit-ulit na halaga, awtomatikong inuuna ng Python ang unang miyembro.
Buod
Ang enum
module ng Python ay isang napaka-kapaki-pakinabang na tool para sa pagbubuklod ng mga hanay ng mga constant, pagpapabuti ng pagbasa, at pagpapanatili ng pagkakapareho ng code. Maraming maaaring paggamit, mula sa pangunahing paggamit hanggang sa awtomatikong pagtatalaga ng halaga gamit ang auto()
, pati na rin ang paggamit bilang mga bit flag.
Ang wastong pag-unawa at pag-master sa enum
ay maaaring mapabuti ang kalidad ng code at makatulong na maiwasan ang mga pagkakamali.
Maaari mong sundan ang artikulo sa itaas gamit ang Visual Studio Code sa aming YouTube channel. Paki-check din ang aming YouTube channel.