Mga Enumerasyon sa Python

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.

YouTube Video