Apa itu Enum
Enumerasi, sering disingkat sebagai enum, adalah jenis data yang terdiri dari satu set nilai yang diberi nama yang disebut elemen atau anggota. Dengan kata lain, enum adalah cara untuk mengelompokkan konstanta terkait menjadi satu, sehingga menciptakan jenis baru yang dapat mengambil salah satu dari beberapa nilai yang telah ditentukan sebelumnya.
Misalnya, bayangkan sebuah skenario di mana kita sedang mengembangkan sebuah sistem yang perlu melacak status yang berbeda untuk sebuah tugas. Status-status tersebut bisa berupa "Belum Dimulai", "Sedang Berlangsung", "Selesai", dan "Ditunda". Di sini, kita bisa membuat sebuah enum dengan nama TaskStatus
yang memiliki empat status tersebut sebagai anggota enum-nya. Ini memberikan cara yang rapi, terorganisir, dan tahan terhadap kesalahan untuk mengelola status tugas dalam sistem kita.
Enum di Python
Kita akan menjelajahi cara menggunakan enumerasi, atau enum, di Python. Kita akan membahas bagaimana mendefinisikan sebuah enum, cara mengakses anggota-anggotanya, dan cara mengulanginya.
Modul Enum
Python menyediakan modul enum
untuk membuat enumerasi. Modul ini mendefinisikan sebuah kelas dasar Enum
yang dapat digunakan untuk mendapatkan enumerasi apa pun.
from enum import Enum
Mendefinisikan Enum
Untuk mendefinisikan sebuah enumerasi di Python, Anda membuat sebuah kelas yang mewarisi dari Enum
dan menambahkan atribut-atribut kelas untuk setiap nilai yang mungkin.
Sebagai contoh, kita dapat mendefinisikan sebuah enumerasi Day
untuk hari-hari dalam seminggu:
from enum import Enum
class Day(Enum):
MONDAY = 1
TUESDAY = 2
WEDNESDAY = 3
THURSDAY = 4
FRIDAY = 5
SATURDAY = 6
SUNDAY = 7
Dalam contoh ini, Day
adalah enum-nya, dan MONDAY
, TUESDAY
, WEDNESDAY
, dll., adalah anggotanya. Setiap anggota memiliki nama (misalnya, MONDAY
) dan nilai (misalnya, 1
).
Mengakses Anggota Enum
Setelah kita mendefinisikan enumerasi Day
kita, kita dapat mengakses anggotanya secara langsung menggunakan notasi titik:
print(Day.MONDAY)
print(Day.TUESDAY)
Day.MONDAY
Day.TUESDAY
Kita juga dapat mengakses nilai dari anggota enumerasi menggunakan properti .value
:
print(Day.MONDAY.value)
Ini akan menghasilkan output: 1
.
Mengulangi Enum
Enumerasi dapat diulang. Mereka dapat diulang menggunakan loop for
:
for day in Day:
print(day)
Day.MONDAY
Day.TUESDAY
Day.WEDNESDAY
Day.THURSDAY
Day.FRIDAY
Day.SATURDAY
Day.SUNDAY
Membandingkan Enum
Anggota enum dapat dibandingkan menggunakan identitas mereka atau nilai mereka. Ketika Anda membandingkan anggota enum menggunakan identitas mereka (yaitu menggunakan is
), Anda membandingkan apakah mereka adalah anggota yang sama persis dari enum yang sama. Ketika Anda membandingkan anggota enum menggunakan nilai mereka (yaitu menggunakan ==
), Anda membandingkan apakah mereka memiliki nilai yang sama.
Berikut adalah contohnya:
print(Day.MONDAY is Day.MONDAY) # True
print(Day.MONDAY is Day.TUESDAY) # False
print(Day.MONDAY == Day.MONDAY) # True
print(Day.MONDAY == Day.TUESDAY) # False
print(Day.MONDAY == 1) # True
Alias dalam Enum
Dalam enum Python, Anda dapat memiliki dua anggota dengan nilai yang sama. Ketika ini terjadi, anggota kedua dianggap sebagai alias dari anggota pertama. Berikut adalah contohnya:
from enum import Enum
class Color(Enum):
RED = 1
BLUE = 2
GREEN = 3
YELLOW = 4
ORANGE = 1
Dalam contoh ini, ORANGE
adalah alias dari RED
. Jika Anda mencoba mengakses Color.ORANGE
, Anda akan mendapatkan Color.RED
sebagai gantinya:
print(Color.ORANGE) # Output: Color.RED
Auto() dalam Enum
Jika Anda tidak peduli dengan nilai sebenarnya yang terkait dengan setiap anggota enum Anda, Anda dapat menggunakan fungsi auto()
untuk secara otomatis menetapkan nilai. Berikut adalah contohnya:
from enum import Enum, auto
class Color(Enum):
RED = auto()
BLUE = auto()
GREEN = auto()
YELLOW = auto()
Dalam contoh ini, Python akan secara otomatis menetapkan nilai 1
, 2
, 3
, dan 4
ke RED
, BLUE
, GREEN
, dan YELLOW
secara berturut-turut.
Memastikan Anggota Enum Unik
Jika Anda ingin memastikan bahwa semua anggota enum Anda memiliki nilai yang unik, Anda dapat menggunakan dekorator @unique
dari modul enum
. Jika Anda menerapkan dekorator ini pada enum dengan nilai yang tidak unik, Python akan memunculkan ValueError
.
from enum import Enum, unique
@unique
class Color(Enum):
RED = 1
BLUE = 2
GREEN = 3
YELLOW = 4
ORANGE = 5
Dalam contoh ini, jika Anda mencoba menambahkan warna lain dengan nilai yang sudah digunakan (misalnya, PINK = 1
), Python akan memunculkan ValueError
.