Panduan Enum untuk Pemula di Python

Halo semua, para penyihir Python masa depan! Hari ini, kita akan memulai perjalanan yang menarik ke dunia Enum di Python. Jangan khawatir jika Anda belum pernah mendengar tentang Enums sebelumnya - pada akhir tutorial ini, Anda akan menggunakannya seperti seorang profesional!

Python - Enums

Apa itu Enums di Python?

Bayangkan Anda membuat sebuah permainan di mana pemain dapat memilih tingkat kesulitan yang berbeda. Anda dapat mewakili tingkat ini menggunakan string atau angka sederhana, tetapi apa jika Anda secara kesalahan mengeja salah satu tingkat atau menggunakan angka yang tidak valid? Itu saat Enums datang untuk menyelamat!

Enum, singkatan dari "enumeration," adalah sekumpulan nilai yang memiliki nama dan tidak berubah. Ini seperti daftar khusus dari pilihan yang telah ditentukan yang dapat Anda gunakan di kode Anda. Mari kita lihat contoh pertamanya:

from enum import Enum

class TingkatKesulitan(Enum):
MUDAH = 1
SEDANG = 2
SUSAH = 3

Dalam kode ini, kita mengimpor kelas Enum dari modul enum. Kemudian, kita membuat Enum milik kita sendiri yang dinamakan TingkatKesulitan. Ini memiliki tiga anggota: MUDAH, SEDANG, dan SUSAH, masing-masing memiliki nilai yang terkait.

Mengapa menggunakan Enums?

  1. Keterbacaan: Enums membuat kode Anda lebih mudah dibaca. Dengan menggunakan nama yang berarti daripada angka yang sulit dipahami.
  2. Ketahanan Tipe: Enums membantu mencegah kesalahan dengan memastikan Anda hanya menggunakan nilai yang telah ditentukan.
  3. Organisasi: Mereka mengelompokkan konstanta yang terkait bersama, membuat kode Anda lebih terorganisir.

Mengakses Anggota di Enums

Sekarang bahwa kita telah membuat Enum kita, mari lihat bagaimana kita dapat menggunakannya di kode kita.

print(TingkatKesulitan.MUDAH)        # Output: TingkatKesulitan.MUDAH
print(TingkatKesulitan.MUDAH.name)   # Output: MUDAH
print(TingkatKesulitan.MUDAH.value)  # Output: 1

# Membandingkan anggota Enum
print(TingkatKesulitan.MUDAH == TingkatKesulitan.SEDANG)  # Output: False
print(TingkatKesulitan.SUSAH == TingkatKesulitan.SUSAH)    # Output: True

Apa artinya:

  • Kita dapat mengakses anggota Enum menggunakan notasi titik.
  • Atribut .name memberikan kita nama anggota Enum sebagai string.
  • Atribut .value memberikan kita nilai yang terkait.
  • Kita dapat membandingkan anggota Enum menggunakan ==.

Inovasi ini: Anggota Enum adalah objek singleton. Ini berarti bahwa tidak peduli berapa kali Anda mereferensikan TingkatKesulitan.MUDAH, itu selalu adalah objek yang sama di memori. Itu seperti memiliki seorang teman terbaik yang selalu ada untuk Anda!

Mengulangi melalui Enums

Salah satu hal yang paling keren tentang Enums adalah kita dapat mengulangi melalui mereka. Ini sangat berguna ketika Anda ingin melakukan sesuatu dengan semua pilihan di Enum Anda.

for level in TingkatKesulitan:
print(f"Tingkat Kesulitan: {level.name}, Nilai: {level.value}")

# Output:
# Tingkat Kesulitan: MUDAH, Nilai: 1
# Tingkat Kesulitan: SEDANG, Nilai: 2
# Tingkat Kesulitan: SUSAH, Nilai: 3

Kode ini mengulangi semua anggota TingkatKesulitan Enum kita, mencetak nama dan nilai masing-masing. Itu seperti memiliki pemandu wisata magis yang menunjukkan Anda semua pilihan!

Fitur Enum Lanjutan

Sekarang bahwa kita telah membahas dasar-dasar, mari lihat beberapa fitur lanjutan dari Enums.

Penomoran Otomatis

Jika Anda tidak ingin menetapkan nilai secara manual, Python dapat melakukan itu untuk Anda:

from enum import Enum, auto

class Arah(Enum):
UTARA = auto()
SELATAN = auto()
TIMUR = auto()
BARAT = auto()

print(list(Arah))  # Output: [<Arah.UTARA: 1>, <Arah.SELATAN: 2>, <Arah.TIMUR: 3>, <Arah.BARAT: 4>]

Fungsi auto() secara otomatis menetapkan nilai integer yang meningkat dimulai dari 1.

Menggunakan Enums di fungsi

Enums sangat baik untuk parameter fungsi. Mereka membuat fungsi Anda lebih robust dan self-documenting:

def set_tingkat_kesulitan(level: TingkatKesulitan):
print(f"Tingkat kesulitan permainan diatur ke: {level.name}")

set_tingkat_kesulitan(TingkatKesulitan.SUSAH)  # Output: Tingkat kesulitan permainan diatur ke: SUSAH
set_tingkat_kesulitan("MUDAH")  # Ini akan menyebabkan TypeError

Dengan menentukan TingkatKesulitan sebagai tanda petunjuk jenis untuk parameter level, kita memberitahu Python (dan pengembang lainnya) bahwa fungsi ini mengharapkan anggota TingkatKesulitan Enum.

Metode dan Atribut Enum

Berikut adalah tabel dari metode dan atribut Enum yang berguna:

Metode/Atribut Deskripsi Contoh
Enum.name Mengembalikan nama anggota Enum TingkatKesulitan.MUDAH.name
Enum.value Mengembalikan nilai anggota Enum TingkatKesulitan.MUDAH.value
Enum.__members__ Kamus semua anggota Enum TingkatKesulitan.__members__
Enum(value) Mendapatkan anggota Enum oleh nilai TingkatKesulitan(1)

Kesimpulan

Selamat! Anda baru saja meningkatkan keterampilan Python Anda dengan menguasai Enums. Ingat, Enums seperti piringan keris di atas rak obat Anda - mereka mungkin tampak sederhana, tetapi mereka sangat versatile dan dapat membuat kode Anda lebih bersih, aman, dan lebih mudah dibaca.

Berikutnya Anda bekerja pada sebuah proyek dan menemukan diri Anda menggunakan sekumpulan konstanta yang terkait, pikirkan tentang menggunakan Enum. Anda masa depan (dan semua pengembang yang bekerja dengan kode Anda) akan berterima kasih kepada Anda!

Terus kode, terus belajar, dan ingat - di dunia pemrograman, setiap hari adalah kesempatan untuk menumerate keterampilan Anda! (Mengerti? Enum-erate? Baiklah, saya akan pergi sekarang. ?)

Credits: Image by storyset