Theo định nghĩa, một phép liệt kê là một tập hợp các thành viên có các giá trị hằng số duy nhất được liên kết. Phép liệt kê thường được gọi là enum
Python cung cấp cho bạn mô-đun
4 chứa loạiCode language: Python [python]
print[type[Color.RED]]
5 để xác định kiểu liệt kê mới. Và bạn xác định một kiểu liệt kê mới bằng cách phân lớp lớpCode language: Python [python]
print[type[Color.RED]]
5Code language: Python [python]
print[type[Color.RED]]
Ví dụ sau đây cho thấy cách tạo một kiểu liệt kê có tên là
7Code language: Python [python]
print[type[Color.RED]]
Code language: Python [python]
from enum import Enum class Color[Enum]: RED = 1 GREEN = 2 BLUE = 3
Làm thế nào nó hoạt động
Đầu tiên, nhập loại
5 từ mô-đunCode language: Python [python]
print[type[Color.RED]]
4Code language: Python [python]
print[type[Color.RED]]
Code language: Python [python]
from enum import Enum
Thứ hai, định nghĩa lớp
7 kế thừa từ loạiCode language: Python [python]
print[type[Color.RED]]
5Code language: Python [python]
print[type[Color.RED]]
0Code language: Python [python]
print[type[Color.RED]]
Thứ ba, xác định các thành viên của điều tra
7Code language: Python [python]
print[type[Color.RED]]
2Code language: Python [python]
print[type[Color.RED]]
Lưu ý rằng các thành viên của bảng liệt kê là hằng số. Do đó, tên của họ được viết hoa theo quy ước
Trong ví dụ này,
7 là một phép liệt kê.Code language: Python [python]
print[type[Color.RED]]
44,Code language: Python [python]
print[type[Color.RED]]
45 vàCode language: Python [python]
print[type[Color.RED]]
46 là thành viên của bảng liệt kêCode language: Python [python]
print[type[Color.RED]]
7. Chúng có các giá trị liên quan 1, 2 và 3Code language: Python [python]
print[type[Color.RED]]
Loại thành viên là liệt kê mà nó thuộc về
Sau đây minh họa rằng loại
48 là kiểu liệt kêCode language: Python [python]
print[type[Color.RED]]
7Code language: Python [python]
print[type[Color.RED]]
Code language: Python [python]
print[type[Color.RED]]
đầu ra
4Code language: Python [python]
print[type[Color.RED]]
48 cũng là một thể hiện của phép liệt kê
print[type[Color.RED]]
Code language: Python [python]
7Code language: Python [python]
print[type[Color.RED]]
4Code language: Python [python]
print[type[Color.RED]]
đầu ra
5Code language: Python [python]
print[type[Color.RED]]
Và nó có các thuộc tính tên và giá trị
6Code language: Python [python]
print[type[Color.RED]]
đầu ra
7Code language: Python [python]
print[type[Color.RED]]
Tư cách thành viên và bình đẳng
Để kiểm tra xem một thành viên có trong một kiểu liệt kê hay không, bạn sử dụng toán tử
42. Ví dụCode language: Python [python]
print[type[Color.RED]]
0Code language: Python [python]
from enum import Enum
đầu ra
1Code language: Python [python]
from enum import Enum
Để so sánh hai thành viên, bạn có thể sử dụng toán tử
43 hoặcCode language: Python [python]
print[type[Color.RED]]
44. Ví dụCode language: Python [python]
print[type[Color.RED]]
2Code language: Python [python]
from enum import Enum
đầu ra
3Code language: Python [python]
from enum import Enum
Lưu ý rằng một thành viên và giá trị liên kết của nó không bằng nhau. Ví dụ sau trả về
45Code language: Python [python]
print[type[Color.RED]]
4Code language: Python [python]
from enum import Enum
đầu ra
5Code language: Python [python]
from enum import Enum
Thành viên liệt kê có thể băm
Thành viên liệt kê luôn có thể băm. Điều đó có nghĩa là bạn có thể sử dụng các phần tử liệt kê làm khóa trong từ điển hoặc làm phần tử của Tập hợp
Ví dụ sau sử dụng các thành viên của bảng liệt kê
7 trong từ điểnCode language: Python [python]
print[type[Color.RED]]
6Code language: Python [python]
from enum import Enum
Truy cập một thành viên liệt kê theo tên và giá trị
Cách điển hình để truy cập một phần tử liệt kê là sử dụng ký hiệu dấu chấm [. ] cú pháp như bạn đã thấy cho đến nay
7Code language: Python [python]
from enum import Enum
Bởi vì
5 triển khai phương thứcCode language: Python [python]
print[type[Color.RED]]
48, bạn cũng có thể sử dụng cú pháp dấu ngoặc vuôngCode language: Python [python]
print[type[Color.RED]]
49 để lấy thành viên theo tên của nóCode language: Python [python]
print[type[Color.RED]]
Ví dụ: phần sau sử dụng cú pháp dấu ngoặc vuông
49 để lấy thành viênCode language: Python [python]
print[type[Color.RED]]
44 của bảng liệt kêCode language: Python [python]
print[type[Color.RED]]
7 theo tên của nóCode language: Python [python]
print[type[Color.RED]]
8Code language: Python [python]
from enum import Enum
đầu ra
7Code language: Python [python]
from enum import Enum
Vì một phép liệt kê có thể gọi được, nên bạn có thể lấy một thành viên theo giá trị của nó. Ví dụ: phần sau trả về thành viên
44 của bảng liệt kêCode language: Python [python]
print[type[Color.RED]]
7 theo giá trị của nóCode language: Python [python]
print[type[Color.RED]]
00Code language: Python [python]
print[type[Color.RED]]
đầu ra
7Code language: Python [python]
from enum import Enum
Biểu thức sau trả về
55 vì nó truy cập cùng một phần tử liệt kê bằng cách sử dụng tên và giá trịCode language: Python [python]
print[type[Color.RED]]
02Code language: Python [python]
print[type[Color.RED]]
đầu ra
5Code language: Python [python]
print[type[Color.RED]]
Lặp lại các thành viên liệt kê
Các phép liệt kê là các phép lặp nên bạn có thể lặp lại chúng bằng vòng lặp
56. Ví dụCode language: Python [python]
print[type[Color.RED]]
04Code language: Python [python]
print[type[Color.RED]]
đầu ra
05Code language: Python [python]
print[type[Color.RED]]
Lưu ý rằng thứ tự của các thành viên giống như trong định nghĩa liệt kê
Ngoài ra, bạn có thể sử dụng hàm
57 để trả về danh sách các thành viên từ một kiểu liệt kêCode language: Python [python]
print[type[Color.RED]]
06Code language: Python [python]
print[type[Color.RED]]
đầu ra
07Code language: Python [python]
print[type[Color.RED]]
Bảng liệt kê là bất biến
Bảng liệt kê là bất biến. Điều đó có nghĩa là bạn không thể thêm hoặc xóa thành viên sau khi đã xác định kiểu liệt kê. Và bạn cũng không thể thay đổi giá trị thành viên
Ví dụ sau cố gắng chỉ định một thành viên mới cho bảng liệt kê
7 và gây ra mộtCode language: Python [python]
print[type[Color.RED]]
59Code language: Python [python]
print[type[Color.RED]]
08Code language: Python [python]
print[type[Color.RED]]
Lỗi
09Code language: Python [python]
print[type[Color.RED]]
Ví dụ sau cố gắng thay đổi giá trị của phần tử
44 của bảng liệt kêCode language: Python [python]
print[type[Color.RED]]
7 và gây ra lỗiCode language: Python [python]
print[type[Color.RED]]
62Code language: Python [python]
print[type[Color.RED]]
20Code language: Python [python]
print[type[Color.RED]]
đầu ra
21Code language: Python [python]
print[type[Color.RED]]
Kế thừa từ một kiểu liệt kê
Một kiểu liệt kê không thể được kế thừa trừ khi nó không chứa thành viên nào. Ví dụ sau hoạt động tốt vì bảng liệt kê
7 không chứa thành viên nàoCode language: Python [python]
print[type[Color.RED]]
22Code language: Python [python]
print[type[Color.RED]]
Tuy nhiên, ví dụ sau sẽ không hoạt động vì bảng liệt kê
64 có các thành viênCode language: Python [python]
print[type[Color.RED]]
23Code language: Python [python]
print[type[Color.RED]]
Lỗi
24Code language: Python [python]
print[type[Color.RED]]
Ví dụ liệt kê Python
Ví dụ sau định nghĩa một kiểu liệt kê có tên là
65Code language: Python [python]
print[type[Color.RED]]
25Code language: Python [python]
print[type[Color.RED]]
Giả sử bạn nhận được phản hồi từ yêu cầu HTTP với chuỗi sau
26Code language: Python [python]
print[type[Color.RED]]
Và bạn muốn tra cứu sự liệt kê của
65 bởiCode language: Python [python]
print[type[Color.RED]]
67. Để làm điều đó, bạn cần chuyển đổi chuỗi của phản hồi thành từ điển và nhận giá trị của trạng tháiCode language: Python [python]
print[type[Color.RED]]
27Code language: Python [python]
print[type[Color.RED]]
Và sau đó bạn tra cứu thành viên của bảng liệt kê
65 theo giá trị của trạng tháiCode language: Python [python]
print[type[Color.RED]]
28Code language: Python [python]
print[type[Color.RED]]
đầu ra
29Code language: Python [python]
print[type[Color.RED]]
Đây là chương trình hoàn chỉnh
0Code language: Python [python]
print[type[Color.RED]]
Nếu
67 không phải là một trong những giá trị của thành viênCode language: Python [python]
print[type[Color.RED]]
65 thì sao? . Ví dụCode language: Python [python]
print[type[Color.RED]]