目次
1. Ano ang Python Enum
Ang Enum ng Python ay isang klase para sa enumerasyon na ginagamit upang pagsama-samahin ang magkakaugnay na mga constant sa iisang grupo. Hindi tulad ng karaniwang mga uri ng datos, nagbibigay-daan ang paggamit ng Enum na mapanatili ang kaligtasan at pagkakapare-pareho ng code. Kapaki-pakinabang ito kapag nagtatakda ng isang takdang hanay ng mga halaga; halimbawa, nakatutulong itong kumatawan sa mga limitadong pagpipilian gaya ng kulay, direksyon, o estado.1.1 Mga benepisyo ng Enum
- Mas pinahusay na kaligtasan: Pinipigilan ng Enum ang paggamit ng mga halagang wala sa itinakdang saklaw, kaya naiiwasan ang hindi inaasahang mga error.
- Mas mahusay na pagiging nababasa: Sa pagbibigay ng makahulugang mga pangalan sa mga constant, nagiging mas malinaw ang layunin ng code at humuhusay ang pagiging nababasa nito.
2. Pangunahing paggamit ng Enum
Upang gamitin ang Enum, una, i-import angenum
module at magmana mula sa klase ng Enum upang magdeklara ng bagong klase ng Enum.from enum import Enum
class Color(Enum):
RED = 1
BLUE = 2
GREEN = 3
Sa halimbawang ito, ang klaseng Color
ay may tatlong miyembro (RED
, BLUE
, GREEN
).2.1 Pag-access sa mga miyembro ng Enum
Upang ma-access ang mga miyembro ng Enum, gamitin ang pangalan ng klase at ang pangalan ng miyembro. Maaari ring kunin ang mga miyembro ng Enum batay sa pangalan o halaga.favorite_color = Color.RED
print(favorite_color) # Output: Color.RED
# Kunin ayon sa pangalan
color_by_name = Color['RED']
# Kunin ayon sa halaga
color_by_value = Color(1)
Dahil dito, nagiging simple ang pag-access sa mga miyembro ng Enum.3. Bakit dapat gumamit ng Python Enum
Maraming benepisyo ang paggamit ng Enum sa Python.3.1 Para mapahusay ang readability
Kapag gumagamit ka ng Enum, mas nagiging malinaw ang layunin ng code kaysa sa direktang paggamit ng mga numero o string. Halimbawa, kapag kumakatawan ng direksyon, sa halip na simpleng mga numero, ang pagde-define ng madaling maunawaang mga pangalan gamit ang Enum ay nagpapahusay sa readability.# Kapag hindi gumagamit ng Enum
direction = 1 # mahirap maintindihan kung ano ang ibig sabihin nito
# Kapag gumagamit ng Enum
class Direction(Enum):
NORTH = 1
SOUTH = 2
EAST = 3
WEST = 4
direction = Direction.NORTH # malinaw ang intensyon
3.2 Para pasimplihin ang code
Sa paggamit ng Enum, maaari mong pamahalaan nang sama-sama ang mga magkakaugnay na constant at mabawasan ang pagiging redundant ng code. Bukod dito, nababawasan ang paulit-ulit na pagde-define at tumataas ang kahusayan sa trabaho.class Permission(Enum):
READ = 'read'
WRITE = 'write'
EXECUTE = 'execute'
3.3 Para maiwasan ang mga pagkakamali sa input
Dahil tanging ang mga naitakdang halaga lamang ang maaaring gamitin sa Enum, naiiwasan ang pagpasok ng hindi inaasahang mga halaga. Halimbawa, kung magde-define ka ng Enum para kumatawan sa mga araw ng linggo, hindi na magagamit ang iba pang mga halaga.class Weekday(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
# Magkakaroon ng error kapag sinubukan mong gumamit ng hindi wastong halaga

4. Mga advanced na paraan ng paggamit ng Enum
Bukod sa pangunahing paggamit, may mga mas advanced na aplikasyon din ang Enum.4.1 IntEnum
IntEnum
ay isang hinangong uri ng Enum na nagbibigay-daan na ituring ang mga miyembro ng Enum bilang mga integer na halaga. Dahil dito, maaari mong direktang ihambing ang mga miyembro ng Enum sa mga integer na halaga.from enum import IntEnum
class Status(IntEnum):
SUCCESS = 1
FAILURE = 2
print(Status.SUCCESS == 1) # Output: True
4.2 Flag at IntFlag
Flag
at IntFlag
ay ginagamit upang pagsamahin ang maraming flag gamit ang mga operasyong bitwise. Halimbawa, kapag kinakatawan ang mga pahintulot sa file, maaaring pagsama-samahin ang maraming flag sa iisang halaga。from enum import IntFlag
class Permission(IntFlag):
READ = 1
WRITE = 2
EXECUTE = 4
permissions = Permission.READ | Permission.WRITE
print(permissions) # Output: Permission.READ|WRITE
Sa ganitong paraan, gamit ang Flag
at IntFlag
, maaari mong mahusay na pamahalaan ang mga halagang bunga ng pagsasama-sama ng maraming flag。5. Mga praktikal na halimbawa ng Enum
Maaaring gamitin ang Enum sa maraming sitwasyon. Narito ang ilang praktikal na halimbawa.5.1 Enum para sa modelo ng kulay
Kapag kailangang irepresenta ang RGB na mga kulay, maaaring gamitin ang Enum upang tukuyin ang mga kulay at ang mga halaga nito.class RGBColor(Enum):
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
5.2 Pamamahala ng estado
Sa paggamit ng Enum, maaari mong pamahalaan ang estado ng sistema o ng mga gawain. Halimbawa, sa pagtukoy ng progreso ng gawain gamit ang Enum, mas madaling maunawaan ang code.class TaskStatus(Enum):
PENDING = 'Pending'
IN_PROGRESS = 'In Progress'
COMPLETED = 'Completed'
5.3 Pamamahala ng mga opsyon sa konpigurasyon
Sa pamamahala ng mga opsyon sa konpigurasyon gamit ang Enum, mas nagiging madali ang pagdaragdag at pagbabago ng mga opsyon.class ConfigOption(Enum):
DEBUG = 'debug'
PRODUCTION = 'production'
TESTING = 'testing'