Python - Enums: Panduan untuk Pemula
Halo di sini, penyihir Python masa depan! Hari ini, kita akan melakukan perjalanan yang menarik ke dunia Enums di Python. Jangan khawatir jika anda belum pernah mendengar tentang Enums sebelum ini - pada akhir tutorial ini, anda akan menggunakannya seperti seorang profesional!
Apa itu Enums di Python?
Bayangkan anda membuat permainan di mana pemain dapat memilih tingkat kesukaran yang berbeza. Anda boleh mewakili tingkat ini menggunakan rentetan atau nombor yang simple, tetapi apa jika anda tersilap mengeja satu tingkat atau menggunakan nombor yang tidak sah? Itulah di mana Enums datang untuk penyelamat!
Enum, singkatan untuk "enumeration," adalah satu set nilai yang dinamakan yang tidak berubah. Ia seperti satu senarai khas dengan pilihan yang telah ditetapkan yang anda boleh gunakan di atas kode anda. Mari kita melihat contoh pertama kita:
from enum import Enum
class DifficultyLevel(Enum):
EASY = 1
MEDIUM = 2
HARD = 3
Dalam kode ini, kita mengimport kelas Enum dari modul enum. Kemudian, kita membuat Enum sendiri yang dipanggil DifficultyLevel
. Ia memiliki tiga anggota: EASY, MEDIUM, dan HARD, masing-masing berkaitan dengan satu nilai.
Mengapa gunakan Enums?
- Keterbacaan: Enums menjadikan kode anda lebih mudah dibaca. Alih-alih menggunakan nombor yang sulit untuk dimengerti, anda boleh menggunakan nama yang berarti.
- Keselamatan Jenis: Enums membantu menghindari kesalahan dengan memastikan anda hanya menggunakan nilai yang telah ditetapkan.
- Organisasi: Mereka menggabungkan konstan yang berkaitan bersama-sama, menjadikan kode anda lebih terorganisir.
Mengakses Anggota di Enums
Sekarang bahwa kita telah membuat Enum kita, mari kita lihat bagaimana kita boleh menggunakannya di atas kode kita.
print(DifficultyLevel.EASY) # Output: DifficultyLevel.EASY
print(DifficultyLevel.EASY.name) # Output: EASY
print(DifficultyLevel.EASY.value) # Output: 1
# Membandingkan anggota Enum
print(DifficultyLevel.EASY == DifficultyLevel.MEDIUM) # Output: False
print(DifficultyLevel.HARD == DifficultyLevel.HARD) # Output: True
Mari kita pecahkan ini:
- Kita boleh mengakses anggota Enum menggunakan notasi titik.
- Atribut
.name
memberikan kita nama anggota Enum sebagai satu rentetan. - Atribut
.value
memberikan kita nilai yang berkaitan. - Kita boleh membandingkan anggota Enum menggunakan
==
.
Di sini faktanya yang menarik: Anggota Enum adalah objek singleton. Ini berarti bahwa tidak peduli berapa kali anda mereferensikan DifficultyLevel.EASY
, ia selalu adalah objek yang sama di atas memori. Ia seperti memiliki seorang Sahabat terbaik yang selalu ada untuk anda!
Mengitarikan melalui Enums
Satu dari yang paling keren tentang Enums adalah kita boleh mengitarik melalui mereka. Ini sangat berguna apabila anda ingin melakukan sesuatu dengan semua pilihan di atas Enum anda.
for level in DifficultyLevel:
print(f"Kesukaran: {level.name}, Nilai: {level.value}")
# Output:
# Kesukaran: EASY, Nilai: 1
# Kesukaran: MEDIUM, Nilai: 2
# Kesukaran: HARD, Nilai: 3
Kode ini mengulang semua anggota DifficultyLevel
Enum kita, mencetak setiap nama dan nilai. Ia seperti memiliki pemandu perjalanan magis yang menunjukkan anda semua pilihan!
Fitur Enum Lanjutan
Sekarang bahwa kita telah menutupi dasar-dasar, mari kita lihat beberapa fitur lanjutan dari Enums.
Penomoran Otomatis
Jika anda tidak mahu menetapkan nilai secara manual, Python boleh melakukan itu untuk anda:
from enum import Enum, auto
class Direction(Enum):
NORTH = auto()
SOUTH = auto()
EAST = auto()
WEST = auto()
print(list(Direction)) # Output: [<Direction.NORTH: 1>, <Direction.SOUTH: 2>, <Direction.EAST: 3>, <Direction.WEST: 4>]
Fungsi auto()
secara otomatis menetapkan nilai integer meningkat dimulai dari 1.
Menggunakan Enums di atas fungsi
Enums adalah sangat baik untuk parameter fungsi. Mereka menjadikan fungsi anda lebih kuat dan mandiri-dokumentasi:
def set_difficulty(level: DifficultyLevel):
print(f"Tingkat kesukaran permainan ditetapkan ke: {level.name}")
set_difficulty(DifficultyLevel.HARD) # Output: Tingkat kesukaran permainan ditetapkan ke: HARD
set_difficulty("EASY") # Ini akan memunculkan TypeError
Dengan menetapkan DifficultyLevel
sebagai petunjuk jenis untuk parameter level
, kita memberitahu Python (dan pengembang lain) bahwa fungsi ini mengharapkan anggota DifficultyLevel
Enum.
Metode dan Atribut Enum
Di sini adalah satu jadual metode dan atribut Enum yang berguna:
Metode/Atribut | Keterangan | Contoh |
---|---|---|
Enum.name |
Mengembalikan nama anggota Enum | DifficultyLevel.EASY.name |
Enum.value |
Mengembalikan nilai anggota Enum | DifficultyLevel.EASY.value |
Enum.__members__ |
Kamus semua anggota Enum | DifficultyLevel.__members__ |
Enum(value) |
Dapatkan anggota Enum oleh nilai | DifficultyLevel(1) |
Kesimpulan
Selamat! Anda baru saja meningkatkan keterampilan Python anda dengan menguasai Enums. Ingat, Enums adalah seperti pisaunya Swiss Army di atas toolkit pengoding anda - mereka mungkin nampak simple, tetapi mereka sangat serba guna dan boleh membuat kode anda lebih bersih, lebih aman, dan lebih mudah dibaca.
Pada masa anda bekerja di atas projek dan mendapati diri anda menggunakan satu set konstan yang berkaitan, pikir tentang menggunakan Enum. Anda masa depan (dan mana-mana pengembang yang bekerja dengan kode anda) akan berterima kasih kepada anda!
Teruskan untuk mengode, teruskan untuk belajar, dan ingat - di atas dunia pemrograman, setiap hari adalah peluang untuk mengenumerasikan keterampilan anda! (Mengerti? Enum-erasikan? Baiklah, saya akan pergi sekarang. ?)
Credits: Image by storyset