Cara Membuat Enum dengan Python

Artikel ini akan membahas panduan tentang useran objek “Enum” dengan Python. Enum atau kelas “enumerasi” memungkinkan Anda membuat konstanta unik yang nilainya tetap tidak berubah dalam program dan aplikasi Python. Semua contoh kode dalam artikel ini diuji dengan Python 3.9.5 di Ubuntu 21.04.

Tentang Python Enums

Seperti yang dinyatakan sebelumnya, Enum adalah objek yang memiliki nilai konstan. Mereka memiliki nama simbolis atau representasional yang melekat pada nilai masing-masing. Mereka dengan cara yang mirip dengan variabel Python lainnya, tetapi datang dengan beberapa fitur unik seperti objek dan pengelompokan yang aman untuk tipe. Dalam Python, enum selalu direpresentasikan menggunakan karakter huruf besar untuk menunjukkan bahwa mereka memiliki nilai konstan. Enum sangat berguna dalam kasus ketika Anda memiliki rentang nilai yang mungkin dan Anda perlu memilih dan merujuk ke pilihan terbatas dalam logika program Anda. Penggunaan Enums dalam Python dapat dipahami dengan baik melalui contoh. Beberapa di antaranya dijelaskan di bawah ini.

Membuat Enum

Anda dapat membuat enum dengan membuat kelas baru yang mewarisi kelas Enum itu sendiri. Lihat contoh kode di bawah ini:

from enum import Enum

class Color(Enum):
    YELLOW = 1
    BLACK = 2
    WHITE = 3
    PURPLE = 4
    ORANGE = 5

print (Color(1))
print (repr(Color(1)))
print (Color.YELLOW)
print (type(Color.YELLOW))
print (Color.YELLOW.name)
print (Color.YELLOW.value)

Pernyataan pertama mengimpor kelas Enum dari modul enum. Selanjutnya kelas baru yang disebut “Warna” dibangun dengan mewarisi kelas Enum. Beberapa variabel (anggota enum) kemudian dibuat memiliki nilai konstan. Variabel-variabel ini mewakili lima kemungkinan pilihan. Beberapa pernyataan cetak berikutnya menunjukkan bagaimana Anda dapat mengakses enum ini, nama dan nilainya. Pernyataan-pernyataan ini cukup jelas. Untuk mengakses pilihan enum yang mungkin, Anda dapat menggunakan notasi titik atau memberikan nilai yang diketahui sebagai argumen ke kelas. Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

Color.YELLOW

Color.YELLOW

YELLOW
1

Seperti yang Anda lihat di output, ada berbagai cara Anda dapat mengakses anggota enum. Perhatikan bahwa memanggil fungsi print pada enum akan mengembalikan bentuk string yang dapat dibaca manusia dan bukan nilainya. Jadi mengacu pada Color.YELLOW akan mengembalikan Color.YELLOW dan bukan 1.

Iterasi Melalui Enum

Anda dapat mengulangi melalui objek tipe enum dan mendapatkan anggotanya menggunakan pernyataan loop.

from enum import Enum

class Color(Enum):
    YELLOW = 1
    BLACK = 2
    WHITE = 3
    PURPLE = 4
    ORANGE = 5

for c in Color:
    print (c.name, c.value)

Menggunakan variabel “c”, Anda dapat mengakses setiap anggota objek tipe enum Warna. Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut.

YELLOW 1
BLACK 2
WHITE 3
PURPLE 4
ORANGE 5

Nama Anggota Enum Harus Unik tetapi Nilai Duplikat Diperbolehkan

Anda tidak dapat membuat dua anggota enum dengan nama yang sama tetapi nilainya tidak memiliki batasan seperti itu. Contoh kode berikut akan menimbulkan error karena ada dua anggota enum dengan nama yang sama.

from enum import Enum

class Color(Enum):
    BLACK = 1
    BLACK = 2
    WHITE = 3
    PURPLE = 4
    ORANGE = 5

Setelah menjalankan contoh kode di atas, Anda akan mendapatkan error yang mirip dengan ini:

File "/usr/lib/python3.9/enum.py", line 133, in __setitem__
    raise TypeError('Attempted to reuse key: %r' % key)
TypeError: Attempted to reuse key: 'BLACK'

Seperti yang Anda lihat di output, nama duplikat tidak diperbolehkan untuk anggota enum. Namun, kode berikut ini valid di mana dua anggota enum memiliki nilai yang sama.

from enum import Enum

class Color(Enum):
    YELLOW = 2
    BLACK = 2
    WHITE = 3
    PURPLE = 4
    ORANGE = 5

Jika Anda juga ingin memaksakan nilai unik untuk anggota enum beserta namanya, Anda dapat menggunakan dekorator “unik” untuk mencegah nilai duplikat.

from enum import Enum, unique

@unique
class Color(Enum):
    YELLOW = 2
    BLACK = 2
    WHITE = 3
    PURPLE = 4
    ORANGE = 5

Dekorator “@unique” memaksa objek tipe enum untuk membuat error ketika ada nilai duplikat yang ditetapkan ke anggota enum. Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

File "/usr/lib/python3.9/enum.py", line 989, in unique
    raise ValueError('duplicate values found in %r: %s' %
ValueErro r: duplicate values found in : BLACK -> YELLOW

Tetapkan Nilai Secara Otomatis ke Anggota Enum

Jika nilai anggota enum tidak penting bagi Anda, Anda dapat menggunakan metode “otomatis” yang tersedia di modul enum untuk secara otomatis menetapkan nomor urut ke anggota enum.

from enum import Enum, auto

class Color(Enum):
    YELLOW = auto()
    BLACK = auto()
    WHITE = auto()
    PURPLE = auto()
    ORANGE = auto()

for c in Color:
    print (c.name, c.value)

Seperti yang Anda lihat dalam contoh kode di atas, alih-alih secara eksplisit menetapkan beberapa nilai ke anggota enum, fungsi otomatis telah dipanggil saat membuat setiap anggota. Metode otomatis selalu menetapkan 1 sebagai nilai pertama. Setelah menjalankan contoh kode di atas, Anda akan mendapatkan output berikut:

YELLOW 1
BLACK 2
WHITE 3
PURPLE 4
ORANGE 5

Kesimpulan

Objek tipe enum dengan Python memungkinkan Anda membuat variabel gaya konstan yang memiliki nama unik. Variabel-variabel ini, biasanya disebut anggota enum, dapat diwakili oleh string yang dapat dibaca manusia. Enum sangat berguna ketika Anda ingin memilih satu atau lebih pilihan dari sekelompok opsi terbatas.

Related Posts