Enumerasi di Python

Enumerasi di Python

Artikel ini menjelaskan tentang enumerasi di Python.

YouTube Video

Enumerasi di Python

enum di Python adalah kelas khusus untuk mendefinisikan konstanta, meningkatkan keterbacaan, dan membantu mencegah kesalahan pengkodean.

Apa itu Enum?

Enum (singkatan dari enumeration) adalah kelas yang digunakan untuk mendefinisikan sekumpulan konstanta bernama. Ini biasanya digunakan untuk mengelompokkan konstanta yang saling terkait. Misalnya, ini cocok digunakan untuk merepresentasikan warna, hari dalam seminggu, atau arah.

Mengapa menggunakan Enum?

Ada beberapa alasan untuk menggunakan Enum.

  • Peningkatan keterbacaan: Menggunakan konstanta bernama membuat kode lebih intuitif.
  • Pencegahan bug: Ini mencegah perubahan atau penyalahgunaan nilai konstanta.
  • Pengelompokan: Ini mengorganisasi konstanta yang saling terkait ke dalam satu kelas, merepresentasikan data terstruktur.

Penggunaan dasar Enum

Untuk menggunakan enum, impor modul enum dan definisikan sebuah kelas. Kelas tersebut harus mewarisi dari Enum dan mendefinisikan nilai-nilai yang ingin Anda perlakukan sebagai konstanta.

Contoh dasar Enum

 1from enum import Enum
 2
 3class Color(Enum):
 4    RED = 1
 5    GREEN = 2
 6    BLUE = 3
 7
 8# Usage of Enum
 9print(Color.RED)        # Color.RED
10print(Color.RED.name)   # RED
11print(Color.RED.value)  # 1

Pada contoh ini, kami mendefinisikan kelas Enum bernama Color dengan tiga nilai. Setiap nama dapat diakses melalui atribut name, dan nilai yang terkait dapat diakses melalui atribut value.

Membandingkan Enum

Anggota Enum dapat dibandingkan baik berdasarkan nama maupun nilai. Anda dapat menggunakan operator is atau operator == untuk memeriksa identitas dan kesetaraan.

Contoh perbandingan

 1from enum import Enum
 2
 3class Direction(Enum):
 4    NORTH = 1
 5    SOUTH = 2
 6    EAST = 3
 7    WEST = 4
 8
 9# Equality comparison
10print(Direction.NORTH == Direction.SOUTH)  # False
11print(Direction.NORTH == Direction.NORTH)  # True
12
13# Identity comparison using is
14print(Direction.NORTH is Direction.SOUTH)  # False
15print(Direction.NORTH is Direction.NORTH)  # True

Di sini, perbandingan Enum menggunakan == dan is ditunjukkan. Enum dirancang untuk membandingkan objek dengan nama dan nilai yang sama secara akurat.

Penetapan nilai otomatis dengan auto()

Jika Anda ingin menetapkan nilai secara otomatis ke anggota Enum, Anda dapat menggunakan enum.auto(). auto() memungkinkan Python menetapkan nilai secara otomatis, menghilangkan kebutuhan untuk penentuan manual oleh pengembang.

Contoh penggunaan auto()

 1from enum import Enum, auto
 2
 3class Animal(Enum):
 4    DOG = auto()
 5    CAT = auto()
 6    MOUSE = auto()
 7
 8# Check the values of Enum
 9print(Animal.DOG.value)    # 1
10print(Animal.CAT.value)    # 2
11print(Animal.MOUSE.value)  # 3

Dalam contoh ini, penggunaan auto() menghilangkan kebutuhan untuk menentukan nilai secara eksplisit, sehingga membuat kode lebih ringkas.

Menetapkan beberapa nilai ke anggota Enum

Anggota Enum juga dapat memiliki beberapa nilai, seperti tuple. Ini memungkinkan setiap anggota memiliki informasi tambahan yang terkait.

Contoh penggunaan tuple

 1from enum import Enum
 2
 3class Status(Enum):
 4    ACTIVE = (1, 'Active user')
 5    INACTIVE = (2, 'Inactive user')
 6    SUSPENDED = (3, 'Suspended user')
 7
 8# Accessing Enum members
 9print(Status.ACTIVE.name)    # ACTIVE
10print(Status.ACTIVE.value)   # (1, 'Active user')
11print(Status.ACTIVE.value[1])  # Active user

Dalam contoh ini, anggota kelas Status memiliki dua nilai masing-masing, mewakili status dan deskripsi. Ini berguna ketika Anda ingin menghubungkan beberapa informasi dengan anggota Enum.

Menggunakan Enum sebagai bendera

Enum Python mencakup kelas Flag yang dapat digunakan seperti bit bendera. Menggunakan Flag memungkinkan Anda mengelola beberapa status secara kombinasi.

Contoh penggunaan Flag

 1from enum import Flag, auto
 2
 3class Permission(Flag):
 4    READ = auto()
 5    WRITE = auto()
 6    EXECUTE = auto()
 7
 8# Combining flags
 9permission = Permission.READ | Permission.WRITE
10print(permission)                 # Permission.READ|WRITE
11print(Permission.EXECUTE in permission)  # False

Dalam contoh ini, operasi bitwise digunakan untuk menggabungkan beberapa izin. Menggunakan Flag memungkinkan Anda mengelola beberapa status secara ringkas.

Poin yang perlu diingat saat menggunakan Enum

Ketakberubahan Enum

Anggota Enum tidak dapat diubah. Setelah didefinisikan, nama atau nilainya tidak dapat diubah. Ini merupakan karakteristik penting untuk menjaga konsistensi sebagai konstanta.

1from enum import Enum
2
3class Days(Enum):
4    MONDAY = 1
5    TUESDAY = 2
6
7# Example of immutability
8# Days.MONDAY = 3  # AttributeError: Cannot reassign members.

Larangan duplikasi anggota

Anggota Enum harus memiliki nama dan nilai yang unik. Bahkan ketika nilai duplikat diizinkan, Python secara otomatis memprioritaskan anggota yang pertama.

Ringkasan

Modul enum di Python adalah alat yang sangat berguna untuk mengelompokkan sekumpulan konstanta, meningkatkan keterbacaan, dan menjaga konsistensi kode. Beragam penggunaan dimungkinkan, mulai dari penggunaan dasar hingga penetapan nilai otomatis menggunakan auto(), serta penggunaan sebagai bendera bit.

Memahami dan menguasai enum dengan baik dapat meningkatkan kualitas kode dan membantu mencegah kesalahan.

Anda dapat mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Silakan periksa juga saluran YouTube kami.

YouTube Video