Traffine I/O

Bahasa Indonesia

2022-03-30

Enum di Python

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.

python
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:

python
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:

python
print(Day.MONDAY)
print(Day.TUESDAY)
Day.MONDAY
Day.TUESDAY

Kita juga dapat mengakses nilai dari anggota enumerasi menggunakan properti .value:

python
print(Day.MONDAY.value)

Ini akan menghasilkan output: 1.

Mengulangi Enum

Enumerasi dapat diulang. Mereka dapat diulang menggunakan loop for:

python
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:

python
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:

python
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:

python
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:

python
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.

python
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.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!