Computer >> Máy Tính >  >> Lập trình >> Python

enum - Hỗ trợ liệt kê trong Python

Liệt kê là một tập hợp các định danh (thành viên) được cho các giá trị duy nhất và không đổi. Trong một bảng liệt kê, các thành viên có thể được so sánh bằng danh tính. Đối tượng liệt kê cũng có thể được phân loại.

Mô-đun enum định nghĩa các lớp sau

Enum :Lớp cơ sở để tạo các hằng số được liệt kê.

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

Bảng kê được tạo bằng cú pháp lớp

#enumexample.py
from enum import Enum
class langs(Enum):
Python = 1
Java = 2
Cpp = 3
Ruby = 4

Các thành viên trong bảng điều tra có biểu diễn chuỗi có thể đọc được của con người và biểu diễn đại diện.

>>> from enumexample import langs
>>> print (langs.Python)
langs.Python
>>> print (repr(langs.Python))
<langs.Python: 1>

Mỗi thành viên enum có tên và thuộc tính giá trị.

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

Bạn có thể sử dụng một vòng lặp để lặp lại trên 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ể được truy cập với sự trợ giúp của giá trị hoặc danh tính

>>> langs(3)
<langs.Cpp: 3>
>>> langs['Java']
<langs.Java: 2>

Các toán tử nhận dạng được và không được sử dụng để so sánh các thành viên của enum.

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

Có hai thành viên enum trùng tên là không hợp lệ. Tuy nhiên, hai thành viên enum được phép có cùng giá trị. Thay đổi enumexample.py thà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.Cpp: 3>
>>> langs.Cplusplus
<langs.Cpp: 3>
>>> langs(3)
<langs.Cpp: 3>

Theo mặc định, bảng liệt kê có thể có nhiều tên làm bí danh cho cùng một giá trị. Để đảm bảo giá trị duy nhất, hãy sử dụng @ enum.unique A class decorator dành riêng cho liệt kê.