Enumerasi dalam Python

Enumerasi dalam Python

Artikel ini menerangkan tentang enumerasi dalam Python.

YouTube Video

Enumerasi dalam Python

enum dalam Python adalah kelas khas untuk mendefinisikan pemalar, meningkatkan kebolehbacaan dan membantu mengelakkan kesalahan pengekodan.

Apakah itu Enum?

Enum (singkatan dari enumeration) adalah kelas yang digunakan untuk mendefinisikan satu set pemalar bernama. Ia biasanya digunakan untuk mengumpulkan pemalar yang berkaitan bersama-sama. Sebagai contoh, ia sesuai untuk mewakili warna, hari-hari dalam seminggu, atau arah.

Kenapa menggunakan Enum?

Terdapat beberapa sebab untuk menggunakan Enum.

  • Kebolehbacaan yang lebih baik: Menggunakan pemalar bernama menjadikan kod lebih intuitif.
  • Pencegahan bug: Ia menghalang perubahan atau penyalahgunaan nilai pemalar.
  • Pengelompokan: Ia mengatur pemalar yang berkaitan ke dalam satu kelas, mewakili data yang terstruktur.

Penggunaan asas Enum

Untuk menggunakan enum, import modul enum dan definisikan sebuah kelas. Kelas tersebut harus mewarisi dari Enum dan mendefinisikan nilai yang anda mahu jadikan sebagai pemalar.

Contoh asas penggunaan 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

Dalam contoh ini, kami mendefinisikan sebuah kelas Enum bernama Color dengan tiga nilai. Setiap nama boleh diakses melalui atribut name, dan nilai yang berkaitan boleh diakses melalui atribut value.

Membandingkan Enum

Ahli Enum boleh dibandingkan sama ada melalui nama atau nilai. Anda boleh menggunakan operator is atau operator == untuk memeriksa identiti dan kesamaan.

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 direka untuk membandingkan objek dengan nama dan nilai yang sama dengan betul.

Penetapan nilai automatik dengan auto()

Jika anda ingin menetapkan nilai kepada ahli Enum secara automatik, anda boleh menggunakan enum.auto(). auto() membolehkan Python menetapkan nilai secara automatik, menghapuskan keperluan untuk spesifikasi manual oleh pembangun.

Contoh 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() menghapuskan keperluan untuk menetapkan nilai secara eksplisit, menjadikan kod lebih ringkas.

Menetapkan pelbagai nilai kepada ahli Enum

Ahli Enum juga boleh menyimpan pelbagai nilai, seperti tuple. Ini membolehkan setiap ahli menyimpan maklumat berkaitan tambahan.

Contoh menggunakan 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, ahli kelas Status mempunyai dua nilai setiap satu, mewakili keadaan dan penerangan. Ini berguna apabila anda ingin mengaitkan pelbagai maklumat dengan ahli Enum.

Menggunakan Enum sebagai bendera

Enum Python merangkumi kelas Flag yang boleh digunakan seperti bendera bit. Penggunaan Flag membolehkan anda menguruskan pelbagai keadaan dalam gabungan.

Contoh 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 pelbagai kebenaran. Penggunaan Flag membolehkan anda menguruskan pelbagai keadaan dengan ringkas.

Perkara yang perlu diingat semasa menggunakan Enum

Ketaktukaran Enum

Ahli Enum tidak boleh diubah. Apabila ditetapkan, nama atau nilai mereka tidak boleh diubah. Ini adalah ciri penting untuk mengekalkan konsistensi sebagai pemalar.

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 ahli yang sama

Ahli Enum mesti mempunyai nama dan nilai yang unik. Walaupun nilai duplikat dibenarkan, Python secara automatik mengutamakan ahli pertama.

Ringkasan

Modul enum Python adalah alat yang sangat berguna untuk mengelompokkan set pemalar, meningkatkan kebolehbacaan, dan mengekalkan konsistensi kod. Pelbagai penggunaan adalah mungkin, dari penggunaan asas hingga penugasan nilai automatik menggunakan auto(), serta penggunaan sebagai penanda bit.

Memahami dan menguasai enum dengan baik dapat meningkatkan kualiti kod dan membantu mencegah ralat.

Anda boleh mengikuti artikel di atas menggunakan Visual Studio Code di saluran YouTube kami. Sila lihat juga saluran YouTube kami.

YouTube Video