← Kembali ke kursus
Pelajaran kursus · Python
Pelajaran 38

Enum

Kelompokkan konstanta bernama dalam satu tipe.

Pahami konsepnya

Enum (enumeration) mendefinisikan kelompok konstanta bernama: class Warna(Enum): MERAH = 1, HIJAU = 2, BIRU = 3. Ini menggantikan angka sihir (0, 1, 2) dengan nama yang terbaca — Warna.MERAH jelas, angka 1 tidak.

Anggota enum bisa diakses lewat nama (Warna.MERAH) atau nilai (Warna(1) memberi Warna.MERAH). name dan value memberi keduanya. Iterasi for w in Warna: menyusuri seluruh anggota. Enum bisa jadi kunci dict dan dibandingkan dengan == atau is.

Auto-numbering: from enum import Enum, auto; MERAH = auto() memberi nilai otomatis berurutan — tak perlu menomori manual. Python 3.11+ menambah StrEnum untuk anggota yang berperilaku seperti string.

Coba contoh kode

from enum import Enum

class Level(Enum):
    BRONZE = 1
    SILVER = 2
    GOLD = 3

member = Level.GOLD
print(member.name, member.value)

for lv in Level:
    print(lv)

# sebagai kunci dict
diskon = {Level.BRONZE: 5, Level.SILVER: 10, Level.GOLD: 20}
print(f"Diskon {member.name}: {diskon[member]}%")

Enum mengubah "diskon level 3" menjadi "diskon Level.GOLD" — jelas dan aman dari salah ketik. Iterasi menyusuri anggota; dict berenum sebagai kunci adalah pola yang bersih untuk lookup berbasis level/status.

Latihan singkat

Uji: enum Hari, Hari(3).name harus `RABU`.