PHP
Python

Trang chủ

Enum trong Python là gì? Cách sử dụng Enum hiệu quả

Ngôn ngữ Python là một ngôn ngữ lập trình đa mục đích, nổi tiếng với cú pháp dễ đọc, dễ học và tính ứng dụng cao. Trong lĩnh vực phát triển web, Python thường được sử dụng thông qua các framework như Django và Flask để xây dựng các ứng dụng web mạnh mẽ, bảo mật và dễ mở rộng. Trong chuyên mục này, Vietnix không chỉ cung cấp kiến thức nền tảng về ngôn ngữ Python mà còn hướng dẫn chi tiết cách xây dựng các ứng dụng web thực tế, sử dụng các framework phổ biến và áp dụng các kỹ thuật tiên tiến. Vietnix cam kết liên tục cập nhật những bài viết mới nhất về các tính năng mới của Python, các thư viện hỗ trợ hữu ích và những phương pháp tốt nhất, giúp bạn khai thác tối đa sức mạnh của Python và hoàn thiện kỹ năng lập trình web của mình.
html
CSS
javascript
sql
python
php
c
c++
bootstrap
react
mysql
reactjs
vuejs
Javascript Tutorials
12/03/2025
12 phút đọc
Theo dõi Vietnix trên

Enum trong Python là gì? Cách sử dụng Enum hiệu quả

Enum là một kiểu dữ liệu đặc biệt trong Python, giúp định nghĩa một tập hợp các hằng số có tên, giúp code rõ ràng và dễ đọc hơn. Trong bài viết này, bạn sẽ tìm hiểu cách tạo Enum bằng class, sử dụng hàm Enum(), cách đảm bảo giá trị không trùng lặp với @unique, cũng như cách truy cập và duyệt qua các thành viên trong Enum. Hãy cùng khám phá chi tiết ngay sau đây.

Điểm chính cần nắm

  • Enum trong Python là gì? Enum là một cách để định nghĩa tập hợp các giá trị hằng số có thể gán cho một biến trong Python, giúp mã nguồn dễ đọc và bảo trì hơn.
  • Cách tạo Enum trong Python Có thể tạo Enum bằng cách kế thừa từ Enum hoặc sử dụng hàm Enum() để khai báo nhanh.
    • Cách 1: Dùng class kế thừa từ Enum Định nghĩa một lớp Enum bằng cách kế thừa từ Enum và khai báo các thành viên với giá trị tương ứng.
    • Cách 2: Tạo Enum nhanh bằng hàm Enum() Sử dụng hàm Enum() để tạo nhanh một Enum từ danh sách tên.
  • Đảm bảo giá trị Enum không trùng với @unique Dùng decorator @unique để ngăn các thành viên Enum có giá trị trùng lặp, giúp đảm bảo tính toàn vẹn dữ liệu.
  • Truy cập các chế độ của Enum Có thể truy cập Enum theo hai chế độ: bằng tên (sử dụng .name) và bằng giá trị (sử dụng .value).
  • Duyệt qua tất cả các mục trong Enum Sử dụng vòng lặp for để duyệt qua các thành viên Enum theo thứ tự khai báo.
  • Vietnix – Giải pháp lưu trữ hàng đầu, tốc độ cao và bảo mật vượt trội Vietnix cung cấp dịch vụ server, hosting, VPS chất lượng cao với hiệu suất tối ưu và bảo mật mạnh mẽ.

Enum trong Python là gì?

Enum (viết tắt của Enumeration) trong Python là một tập hợp các hằng số có giá trị cố định. Mỗi mục trong Enum có một tên duy nhất và một giá trị tương ứng. Enum được sử dụng để định nghĩa một tập hợp các hằng số nhằm giúp code dễ đọc và bảo trì hơn. Trong Python, Enum được hỗ trợ thông qua module enum trong thư viện chuẩn. Khi sử dụng Enum, ta có thể định nghĩa một danh sách các giá trị cố định mà không thể thay đổi, giúp kiểm soát dữ liệu chặt chẽ hơn.

Enum trong Python
Enum trong Python

Cách tạo Enum trong Python trong Python

Python cung cấp nhiều cách để khai báo Enum nhằm quản lý các giá trị hằng số một cách trực quan. Dưới đây là hai phương pháp phổ biến để tạo Enum: sử dụng class kế thừa từ Enum và tạo nhanh bằng hàm Enum().

Cách 1: Dùng class kế thừa từ Enum

Trong Python, bạn có thể tạo Enum bằng cách định nghĩa một class kế thừa từ Enum. Cách này cho phép bạn gán giá trị cố định cho từng thành viên của Enum, đồng thời giúp truy xuất dữ liệu dễ dàng hơn. Ví dụ dưới đây định nghĩa một Enum có tên subjects, trong đó mỗi môn học là một thành viên của Enum với thuộc tính namevalue.

# importing enum 
from enum import Enum

class subjects(Enum):
   ENGLISH = 1
   MATHS = 2
   SCIENCE = 3
   SANSKRIT = 4

obj = subjects.MATHS
print (type(obj))

Kết quả:

<enum “subjects”>

Cách 2: Tạo Enum nhanh bằng hàm Enum()

Ngoài cách kế thừa từ Enum, Python còn cho phép tạo Enum nhanh chóng bằng cách sử dụng trực tiếp hàm tạo Enum(). Cách này giúp định nghĩa Enum mà không cần khai báo một class riêng, phù hợp khi cần khởi tạo nhanh một tập hợp các giá trị cố định. Ví dụ dưới đây minh họa cách tạo một Enum cho danh sách môn học bằng Enum():

Ví dụ:

from enum import Enum  

Subject = Enum("Subject", "ENGLISH MATHS SCIENCE SANSKRIT")  

print(Subject.ENGLISH)  
print(Subject.MATHS)  
print(Subject.SCIENCE)  
print(Subject.SANSKRIT)  

Kết quả:

Subject.ENGLISH
Subject.MATHS
Subject.SCIENCE
Subject.SANSKRIT

Đảm bảo giá trị Enum không trùng với @unique

Mặc định, một Enum có thể có nhiều thành viên được gán cùng một giá trị. Tuy nhiên, trong một số trường hợp, bạn có thể muốn đảm bảo rằng mỗi giá trị trong Enum là duy nhất. Để làm điều đó, Python cung cấp decorator @unique, giúp phát hiện và ngăn chặn các giá trị trùng lặp trong Enum. Ví dụ dưới đây cho thấy cách sử dụng @unique để đảm bảo mỗi môn học trong Enum có một giá trị khác nhau:

Ví dụ:

from enum import Enum, unique

@unique
class subjects(Enum):
   ENGLISH = 1
   MATHS = 2
   GEOGRAPHY = 3
   SANSKRIT = 2

Kết quả: Điều này sẽ gây ra một ngoại lệ như được hiển thị dưới đây.

File “C:\Users\Admin\Downloads\test.py”, line 3, in <module>
class subjects(Enum):
@unique
^^^^^^
raise ValueError(‘duplicate values found in %r: %s’ %
ValueError: duplicate values found in <enum ‘subjects’>: SANSKRIT -> MATHS

Lớp Enum là một lớp callable, do đó bạn có thể sử dụng hàm tạo của nó để tạo một phép liệt kê. Hàm tạo này chấp nhận hai đối số, đó là tên của phép liệt kê và một chuỗi bao gồm các tên biểu tượng thành viên phép liệt kê được phân tách bằng dấu cách.

Truy cập các chế độ của Enum

Trong Python, các thành viên của một Enum có thể được truy cập theo hai chế độ chính:

  • Value − Trong chế độ này, giá trị của thành viên enum được truy cập bằng từ khóa "value" theo sau bởi đối tượng của lớp enum.
  • Name − Tương tự, chúng ta sử dụng từ khóa "name" để truy cập tên của thành viên enum.

Ví dụ:

from enum import Enum

class subjects(Enum):
   ENGLISH = "E"
   MATHS = "M"
   GEOGRAPHY = "G"
   SANSKRIT = "S"
   
obj = subjects.SANSKRIT
print(type(obj))
print(obj.name)
print(obj.value)

Kết quả:

<enum ‘subjects’>
SANSKRIT
S

Duyệt qua tất cả các mục trong Enum

Python cho phép duyệt qua tất cả các thành viên trong một Enum bằng vòng lặp for. Khi lặp qua một Enum, ta có thể truy cập từng thành viên cùng với tên (name) và giá trị (value) của chúng theo thứ tự. Ví dụ sau minh họa cách duyệt qua tất cả các mục trong Enum và in ra màn hình:

Ví dụ:

from enum import Enum

class subjects(Enum):
   ENGLISH = "E"
   MATHS = "M"
   GEOGRAPHY = "G"
   SANSKRIT = "S"

for sub in subjects:
   print (sub.name, sub.value)

Kết quả:

ENGLISH E
MATHS M
GEOGRAPHY G
SANSKRIT S

Tìm mục trong Enum bằng giá trị hoặc tên

Và trong Python, bạn có thể truy xuất một thành viên Enum bằng hai cách:

  • Tìm theo tên: Dùng cú pháp EnumClass["TÊN_THÀNH_VIÊN"] để lấy thành viên theo tên.
  • Tìm theo giá trị: Sử dụng cú pháp EnumClass(giá trị) để lấy thành viên có giá trị tương ứng.

Vietnix – Giải pháp lưu trữ hàng đầu, tốc độ cao và bảo mật vượt trội

Vietnix là một trong những nhà cung cấp dịch vụ thuê máy chủ (server), hosting, VPSdomain hàng đầu tại Việt Nam. Với sứ mệnh mang đến giải pháp lưu trữ hiệu quả, an toàn và tối ưu hiệu suất, Vietnix cam kết cung cấp dịch vụ chất lượng cao cùng đội ngũ hỗ trợ kỹ thuật chuyên nghiệp 24/7. Hơn 80.000 khách hàng đã tin tưởng lựa chọn Vietnix nhờ vào hệ thống máy chủ ổn định, tốc độ cao và khả năng bảo mật vượt trội, giúp doanh nghiệp vận hành trơn tru và an toàn.

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 18001093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, TP. Hồ Chí Minh

Câu hỏi thường gặp

Enum trong Python có tác dụng gì?

Enum giúp định nghĩa một tập hợp các giá trị hằng số có ý nghĩa, giúp mã nguồn dễ đọc, dễ hiểu và tránh việc sử dụng các giá trị không hợp lệ trong chương trình. Điều này đặc biệt hữu ích khi làm việc với các trạng thái hoặc tùy chọn có giới hạn, ví dụ như trạng thái đơn hàng (PENDING, SHIPPED, DELIVERED).

Có những cách nào để tạo Enum trong Python?

Python cung cấp hai cách để tạo Enum:
– Dùng class kế thừa từ Enum, trong đó các thành viên của Enum được định nghĩa dưới dạng hằng số.
– Sử dụng hàm Enum() để tạo Enum một cách nhanh chóng, bằng cách truyền vào tên và danh sách các thành viên dưới dạng chuỗi.

Làm sao để đảm bảo Enum không có giá trị trùng lặp?

Python cho phép nhiều thành viên Enum có cùng giá trị, nhưng nếu muốn đảm bảo rằng tất cả giá trị trong Enum là duy nhất, bạn có thể sử dụng decorator @unique từ thư viện enum. Nếu có giá trị trùng lặp, Python sẽ ném ra lỗi ValueError.

Làm sao để lấy giá trị hoặc tên của một thành viên Enum?

– Để lấy giá trị của một thành viên Enum, sử dụng thuộc tính .value. Ví dụ: Subject.ENGLISH.value sẽ trả về 1.
– Để lấy tên của một thành viên Enum, sử dụng .name. Ví dụ: Subject.ENGLISH.name sẽ trả về chuỗi "ENGLISH".

Có thể lặp qua các thành viên Enum không?

Có, bạn có thể sử dụng vòng lặp for để duyệt qua tất cả các thành viên trong một Enum. Điều này hữu ích khi bạn cần liệt kê hoặc xử lý tất cả các giá trị trong một nhóm hằng số.

Ví dụ:
for subject in Subject: print(subject.name, subject.value)

Có thể tìm một Enum bằng giá trị hoặc tên không?

– Để tìm một Enum bằng giá trị, bạn có thể gọi trực tiếp EnumClass(value), ví dụ: Subject(1) sẽ trả về Subject.ENGLISH.
– Để tìm một Enum bằng tên, bạn có thể sử dụng cú pháp EnumClass["NAME"], ví dụ: Subject["ENGLISH"] sẽ trả về Subject.ENGLISH.

Lời kết

Enum giúp quản lý các giá trị hằng số một cách trực quan và hiệu quả trong Python. Qua bài viết này, bạn đã nắm được cách tạo Enum, truy cập giá trị, duyệt qua các phần tử và tránh trùng lặp khi khai báo. Nếu bạn có bất cứ thắc mắc hay cần hỗ trợ gì, hãy để lại bình luận bên dưới, mình sẽ hỗ trợ nhanh nhất. Cảm ơn bạn đã đọc!

Mọi người cũng xem:

Cao Lê Viết Tiến

PHP Leader
tại
Vietnix

Kết nối với mình qua

Icon Quote
Icon Quote

Học lập trình online cùng vietnix

Học lập trình online cùng Vietnix

PHPXem thêmThu gọn