Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

enum - Hỗ trợ Enum (Enumerations) trong Python


Enumeration (liệt kê) là một tập hợp các định danh (members) được gán giá trị duy nhất và hằng số. Trong một enumeration, các thành viên có thể so sánh bằng bản sắc (identity). Đối tượng Enumeration cũng có thể lặp lại (iterated over).

Module enum định nghĩa các lớp sau:

  • Enum: Lớp cơ sở để tạo các hằng số liệt kê.
  • IntEnum: Lớp cơ sở để tạo các hằng số liệt kê cũng là subclass của int.

Enumerations được tạo bằng cú pháp class:

# enumexample.py
from enum import Enum

class langs(Enum):
    Python = 1
    Java = 2
    Cpp = 3
    Ruby = 4

Các thành viên enumeration có biểu diễn chuỗi dễ đọc (human readable) và repr representation.

>>> from enumexample import langs
>>> print(langs.Python)
langs.Python
>>> print(repr(langs.Python))

Mỗi enum member có thuộc tính name và value.

>>> x = langs.Python
>>> x.name
'Python'
>>> x.value
1

Bạn có thể dùng vòng lặp để lặp qua tất cả các thành viên.

>>> for lang in langs:
    print(lang.name, lang.value)
Python 1
Java 2
Cpp 3
Ruby 4

Các thành viên có thể truy cập với giá trị hoặc bản sắc (identity):

>>> langs(3)

>>> langs['Java']

Toán tử bản sắc is và is not có thể dùng để so sánh các thành viên của enum.

>>> x = langs(2)
>>> y = langs(4)
>>> x is y
False

Việc có hai enum member cùng tên là không hợp lệ. Tuy nhiên, hai enum member được phép có cùng giá trị. Thay đổi enumexample.py như sau:

from enum import Enum

class langs(Enum):
    Python = 1
    Java = 2
    Cpp = 3
    Ruby = 4
    Cplusplus = 3

>>> from enumexample import langs
>>> langs.Cpp

>>> langs.Cplusplus

>>> langs(3)

Mặc định, enumerations có thể có nhiều tên làm alias cho cùng giá trị. Để đảm bảo giá trị duy nhất, dùng @enum.unique - một class decorator đặc biệt cho enumerations.