Hướng dẫn python 3 iterate enum - python 3 lặp lại enum
Kiểm tra kỹ năng lập trình của bạn với bài kiểm tra của W3Resource. Show
Tên riêng sẽ là các thuộc tính bình thường trong Python 3.11 thay vì lỗi hoặc thành viên (tùy thuộc vào việc tên kết thúc bằng dấu gạch dưới). Sử dụng các tên này trong 3.10 sẽ phát hành >>> type(Color.RED)7 Kiểu thành viên >>> type(Color.RED)4 >>> type(Color.RED)7 Thành viên là trường hợp của lớp >>> type(Color.RED)7 của họ và thường được truy cập là >>> print(Color.RED.name) RED885. Trong một số trường hợp nhất định, chúng cũng có thể được truy cập là >>> print(Color.RED.name) RED886, nhưng bạn không bao giờ nên làm điều này vì tra cứu đó có thể thất bại hoặc tệ hơn, trả lại một cái gì đó ngoài thành viên >>> type(Color.RED)7 mà bạn đang tìm ): Ghi chú Trường hợp của các thành viên enum Bởi vì các enum được sử dụng để đại diện cho các hằng số, chúng tôi khuyên bạn nên sử dụng tên Upper_case cho các thành viên enum và sẽ sử dụng kiểu đó trong các ví dụ của chúng tôi. Mới trong phiên bản 3.4.Mã nguồn: lib/enum.py Một liệt kê là một tập hợp các tên biểu tượng (thành viên) bị ràng buộc với các giá trị duy nhất, 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 và bản thân việc liệt kê có thể được lặp lại.Ghi chú Trường hợp của các thành viên enumBởi vì các enum được sử dụng để đại diện cho các hằng số, chúng tôi khuyên bạn nên sử dụng tên Upper_case cho các thành viên enum và sẽ sử dụng kiểu đó trong các ví dụ của chúng tôi. Mới trong phiên bản 3.4.Mã nguồn: lib/enum.py Một liệt kê là một tập hợp các tên biểu tượng (thành viên) bị ràng buộc với các giá trị duy nhất, 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 và bản thân việc liệt kê có thể được lặp lại.Nội dung mô -đun Mô -đun này xác định bốn lớp liệt kê có thể được sử dụng để xác định các bộ tên và giá trị duy nhất:>>> type(Color.RED)7, >>> type(Color.RED)8, >>> type(Color.RED)9 và >>> print(Color.RED.name) RED0. Nó cũng xác định một người trang trí, >>> print(Color.RED.name) RED1 và một người trợ giúp, >>> print(Color.RED.name) RED2.() Lớp ________ 73 ________ 74¶ Lớp cơ sở để tạo các hằng số được liệt kê. Xem phần API chức năng cho một cú pháp xây dựng thay thế.Lớp ________ 73 ________ 76¶ Lớp cơ sở để tạo các hằng số được liệt kê cũng là các lớp con của >>> print(Color.RED.name) RED0 của họ. >>> print(Color.RED.name) RED0 Thành viên cũng là các lớp con của >>> print(Color.RED.name) RED7. Lớp ________ 73 ________ 84¶Lớp cơ sở để tạo các hằng số được liệt kê có thể được kết hợp bằng cách sử dụng các hoạt động bitwise mà không mất tư cách thành viên >>> type(Color.RED)4 Ghi chú Trường hợp của các thành viên enum Bởi vì các enum được sử dụng để đại diện cho các hằng số, chúng tôi khuyên bạn nên sử dụng tên Upper_case cho các thành viên enum và sẽ sử dụng kiểu đó trong các ví dụ của chúng tôi. Ghi chú Trường hợp của các thành viên enum
Một liệt kê là một tập hợp các tên biểu tượng (thành viên) bị ràng buộc với các giá trị duy nhất, 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 và bản thân việc liệt kê có thể được lặp lại. Nội dung mô -đun Mô -đun này xác định bốn lớp liệt kê có thể được sử dụng để xác định các bộ tên và giá trị duy nhất: >>> type(Color.RED)7, >>> type(Color.RED)8, >>> type(Color.RED)9 và >>> print(Color.RED.name) RED0. Nó cũng xác định một người trang trí, >>> print(Color.RED.name) RED1 và một người trợ giúp, >>> print(Color.RED.name) RED2. >>> print(Color.RED.name) RED7. >>> type(Color.RED)2 Lớp ________ 73 ________ 74¶ >>> type(Color.RED) Lớp cơ sở để tạo các hằng số được liệt kê. Xem phần API chức năng cho một cú pháp xây dựng thay thế. Lớp ________ 73 ________ 76¶Lớp ________ 73 ________ 76¶ >>> type(Color.RED)8 Lớp cơ sở để tạo các hằng số được liệt kê cũng là các lớp con của >>> print(Color.RED.name) RED7.() Lớp ________ 73 ________ 79¶ Lớp ________ 73 ________ 84¶Lớp cơ sở để tạo các hằng số được liệt kê có thể được kết hợp bằng cách sử dụng các hoạt động bitwise mà không mất tư cách thành viên >>> print(Color.RED.name) RED10 >>> type(Color.RED)9 của chúng. >>> print(Color.RED.name) RED11 >>> type(Color.RED)9, >>> print(Color.RED.name) RED0, >>> print(Color.RED.name) RED2 >>> print(Color.RED.name) RED12 ________ 73 ________ 87 ()Người trang trí lớp Enum đảm bảo chỉ có một tên bị ràng buộc với bất kỳ một giá trị nào. >>> print(Color.RED.name) RED13 Mô -đun này xác định bốn lớp liệt kê có thể được sử dụng để xác định các bộ tên và giá trị duy nhất: >>> type(Color.RED)7, >>> type(Color.RED)8, >>> type(Color.RED)9 và >>> print(Color.RED.name) RED0. Nó cũng xác định một người trang trí, >>> print(Color.RED.name) RED1 và một người trợ giúp, >>> print(Color.RED.name) RED2. Ghi chú Trường hợp của các thành viên enum Bởi vì các enum được sử dụng để đại diện cho các hằng số, chúng tôi khuyên bạn nên sử dụng tên Upper_case cho các thành viên enum và sẽ sử dụng kiểu đó trong các ví dụ của chúng tôi.Mới trong phiên bản 3.4. Một liệt kê là một tập hợp các tên biểu tượng (thành viên) bị ràng buộc với các giá trị duy nhất, 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 và bản thân việc liệt kê có thể được lặp lại. >>> print(Color.RED.name) RED15 Nội dung mô -đunMô -đun này xác định bốn lớp liệt kê có thể được sử dụng để xác định các bộ tên và giá trị duy nhất: >>> type(Color.RED)7, >>> type(Color.RED)8, >>> type(Color.RED)9 và >>> print(Color.RED.name) RED0. Nó cũng xác định một người trang trí, >>> print(Color.RED.name) RED1 và một người trợ giúp, >>> print(Color.RED.name) RED2. >>> print(Color.RED.name) RED2: >>> print(Color.RED.name) RED16 Lớp ________ 73 ________ 74¶ Lớp cơ sở để tạo các hằng số được liệt kê. Xem phần API chức năng cho một cú pháp xây dựng thay thế.Ghi chú Lớp ________ 73 ________ 76¶ Lớp cơ sở để tạo các hằng số được liệt kê cũng là các lớp con của>>> print(Color.RED.name) RED7.() Ghi chú Lớp ________ 73 ________ 76¶ Lớp cơ sở để tạo các hằng số được liệt kê cũng là các lớp con của>>> print(Color.RED.name) RED7.() Lớp ________ 73 ________ 79¶Sự lặp lại >>> print(Color.RED.name) RED18 Lặp lại các thành viên của một enum không cung cấp các bí danh: >>> print(Color.RED.name) RED19 Thuộc tính đặc biệt >>> print(Color.RED.name) RED115 là một bản đồ tên chỉ được đọc cho các thành viên. Nó bao gồm tất cả các tên được xác định trong bảng liệt kê, bao gồm các bí danh: >>> print(Color.RED.name) RED80 Thuộc tính Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 15 có thể được sử dụng để truy cập chương trình chi tiết cho các thành viên liệt kê. Ví dụ: tìm tất cả các bí danh:So sánh lor >>> print(Color.RED.name) RED81 Các thành viên liệt kê được so sánh bằng danh tính: >>> print(Color.RED.name) RED82 So sánh được đặt hàng giữa các giá trị liệt kê không được hỗ trợ. Các thành viên enum không phải là số nguyên (nhưng xem intenum bên dưới): >>> print(Color.RED.name) RED83 So sánh bình đẳng được xác định mặc dù: >>> print(Color.RED.name) RED84 So sánh với các giá trị không kích thích sẽ luôn so sánh không bằng nhau (một lần nữa, >>> type(Color.RED) >>> isinstance(Color.GREEN, Color) True >>> 8 được thiết kế rõ ràng để hoạt động khác nhau, xem bên dưới):Các thành viên được phép và các thuộc tính của bảng liệt kê Jo Các ví dụ trên sử dụng số nguyên cho các giá trị liệt kê. Sử dụng số nguyên ngắn và tiện dụng (và được cung cấp theo mặc định bởi API chức năng), nhưng không được thực thi nghiêm ngặt. Trong phần lớn các trường hợp sử dụng, người ta không quan tâm đến giá trị thực tế của một liệt kê là gì. Nhưng nếu giá trị là quan trọng, bảng liệt kê có thể có các giá trị tùy ý. >>> print(Color.RED.name) RED85 Then: >>> print(Color.RED.name) RED86 Các bảng liệt kê là các lớp Python, và có thể có các phương pháp và phương pháp đặc biệt như bình thường. Nếu chúng ta có sự liệt kê này: Các quy tắc cho những gì được cho phép như sau: các tên bắt đầu và kết thúc với một dấu gạch dưới được bảo lưu bởi enum và không thể được sử dụng; Tất cả các thuộc tính khác được xác định trong một bảng liệt kê sẽ trở thành thành viên của liệt kê này, ngoại trừ các phương pháp đặc biệt ( >>> print(Color.RED.name) RED126, >>> print(Color.RED.name) RED127, v.v.), các mô tả (Phương pháp cũng là mô tả) và tên biến được liệt kê trong >>> print(Color.RED.name) RED128. Lưu ý: Nếu liệt kê của bạn xác định Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 29 và/hoặc Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 30 thì bất kỳ giá trị nào được trao cho thành viên Enum sẽ được chuyển vào các phương thức đó. Xem hành tinh để biết một ví dụ.Các lớp con enum bị hạn chế >>> print(Color.RED.name) RED87 Một lớp >>> type(Color.RED)7 mới phải có một lớp enum cơ sở, tối đa một loại dữ liệu cụ thể và nhiều lớp mixin dựa trên ____ 132 khi cần thiết. Thứ tự của các lớp cơ sở này là: >>> print(Color.RED.name) RED88 Ngoài ra, phân lớp một liệt kê chỉ được phép nếu việc liệt kê không xác định bất kỳ thành viên nào. Vì vậy, điều này bị cấm: >>> print(Color.RED.name) RED89 Nhưng điều này được cho phép: Cho phép phân lớp các enum xác định các thành viên sẽ dẫn đến vi phạm một số bất biến quan trọng của các loại và trường hợp. Mặt khác, thật hợp lý khi cho phép chia sẻ một số hành vi phổ biến giữa một nhóm các liệt kê. (Xem đặt hàng cho một ví dụ.)Nước ngâm >>> type(Color.RED)40 Tái lập có thể được ngâm và không được giải thích: Ghi chú Mục tiêu của phương thức >>> print(Color.RED.name) RED118 mặc định là cung cấp trình tự >>> print(Color.RED.name) RED7 tiếp theo với trình tự >>> print(Color.RED.name) RED7 cuối cùng được cung cấp, nhưng cách nó thực hiện đây là một chi tiết triển khai và có thể thay đổi. Phương pháp >>> print(Color.RED.name) RED118 phải được xác định trước bất kỳ thành viên nào. Sự lặp lạiLặp lại các thành viên của một enum không cung cấp các bí danh: >>> type(Color.RED)41 Thuộc tính đặc biệt >>> print(Color.RED.name) RED115 là một bản đồ tên chỉ được đọc cho các thành viên. Nó bao gồm tất cả các tên được xác định trong bảng liệt kê, bao gồm các bí danh: >>> print(Color.RED.name) RED80 Thuộc tính Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 15 có thể được sử dụng để truy cập chương trình chi tiết cho các thành viên liệt kê. Ví dụ: tìm tất cả các bí danh: So sánh lorSo sánh lor Các thành viên liệt kê được so sánh bằng danh tính: >>> type(Color.RED)43 So sánh được đặt hàng giữa các giá trị liệt kê không được hỗ trợ. Các thành viên enum không phải là số nguyên (nhưng xem intenum bên dưới): So sánh bình đẳng được xác định mặc dù: So sánh với các giá trị không kích thích sẽ luôn so sánh không bằng nhau (một lần nữa, >>> type(Color.RED) >>> isinstance(Color.GREEN, Color) True >>> 8 được thiết kế rõ ràng để hoạt động khác nhau, xem bên dưới):Các thành viên được phép và các thuộc tính của bảng liệt kê Jo Các ví dụ trên sử dụng số nguyên cho các giá trị liệt kê. Sử dụng số nguyên ngắn và tiện dụng (và được cung cấp theo mặc định bởi API chức năng), nhưng không được thực thi nghiêm ngặt. Trong phần lớn các trường hợp sử dụng, người ta không quan tâm đến giá trị thực tế của một liệt kê là gì. Nhưng nếu giá trị là quan trọng, bảng liệt kê có thể có các giá trị tùy ý.Các bảng liệt kê là các lớp Python, và có thể có các phương pháp và phương pháp đặc biệt như bình thường. Nếu chúng ta có sự liệt kê này: Các quy tắc cho những gì được cho phép như sau: các tên bắt đầu và kết thúc với một dấu gạch dưới được bảo lưu bởi enum và không thể được sử dụng; Tất cả các thuộc tính khác được xác định trong một bảng liệt kê sẽ trở thành thành viên của liệt kê này, ngoại trừ các phương pháp đặc biệt (>>> print(Color.RED.name) RED126, >>> print(Color.RED.name) RED127, v.v.), các mô tả (Phương pháp cũng là mô tả) và tên biến được liệt kê trong >>> print(Color.RED.name) RED128.Lưu ý: Nếu liệt kê của bạn xác định Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 29 và/hoặc Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 30 thì bất kỳ giá trị nào được trao cho thành viên Enum sẽ được chuyển vào các phương thức đó. Xem hành tinh để biết một ví dụ. Các lớp con enum bị hạn chế >>> type(Color.RED)46 Một lớp >>> type(Color.RED)7 mới phải có một lớp enum cơ sở, tối đa một loại dữ liệu cụ thể và nhiều lớp mixin dựa trên ____ 132 khi cần thiết. Thứ tự của các lớp cơ sở này là: >>> print(Color.RED.name) RED88 >>> type(Color.RED)47 hoặc một bản đồ: >>> type(Color.RED)48Mô -đun Tên của mô -đun nơi có thể tìm thấy lớp Enum mới. tên gọinơi có thể tìm thấy lớp enum mới. loại hìnhNhập để trộn vào lớp Enum mới. bắt đầuSố để bắt đầu đếm tại nếu chỉ có tên được truyền vào. Thay đổi trong phiên bản 3.5: Tham số bắt đầu đã được thêm vào.The start parameter was added.The start parameter was added. Có nguồn gốc từIntenum¶Biến thể đầu tiên của >>> type(Color.RED)7 được cung cấp cũng là một lớp con của >>> print(Color.RED.name) RED7. Các thành viên của >>> type(Color.RED)8 có thể được so sánh với các số nguyên; Bằng cách mở rộng, các loại thuốc của các loại khác nhau cũng có thể được so sánh với nhau: >>> type(Color.RED)49 Tuy nhiên, họ vẫn có thể được so sánh với các liệt kê >>> type(Color.RED)7 tiêu chuẩn: >>> print(Color.RED.name) RED40 >>> type(Color.RED)8 Các giá trị hoạt động như số nguyên theo những cách khác mà bạn mong đợi: >>> print(Color.RED.name) RED41 Intflag¶Biến thể tiếp theo của >>> type(Color.RED)7 được cung cấp, >>> print(Color.RED.name) RED0, cũng dựa trên >>> print(Color.RED.name) RED7. Sự khác biệt là >>> print(Color.RED.name) RED0 Các thành viên có thể được kết hợp bằng cách sử dụng các toán tử bitwise (&, |, ^, ~) và kết quả vẫn là thành viên >>> print(Color.RED.name) RED0. Tuy nhiên, như tên gọi, >>> print(Color.RED.name) RED0 Các thành viên cũng phân lớp >>> print(Color.RED.name) RED7 và có thể được sử dụng bất cứ nơi nào sử dụng >>> print(Color.RED.name) RED7. Bất kỳ hoạt động nào trên thành viên >>> print(Color.RED.name) RED0 bên cạnh các hoạt động bit khôn ngoan sẽ mất tư cách thành viên >>> print(Color.RED.name) RED0. Mới trong phiên bản 3.6. Mẫu >>> print(Color.RED.name) RED0 Lớp: >>> print(Color.RED.name) RED42 Cũng có thể đặt tên cho các kết hợp: >>> print(Color.RED.name) RED43 Một sự khác biệt quan trọng khác giữa >>> print(Color.RED.name) RED0 và >>> type(Color.RED)7 là nếu không có cờ được đặt (giá trị là 0), đánh giá boolean của nó là >>> print(Color.RED.name) RED143: >>> print(Color.RED.name) RED44 Bởi vì >>> print(Color.RED.name) RED0 Các thành viên cũng là các lớp con của >>> print(Color.RED.name) RED7 nên họ có thể được kết hợp với họ: >>> print(Color.RED.name) RED45 Lá cờ¶Biến thể cuối cùng là >>> type(Color.RED)9. Giống như >>> print(Color.RED.name) RED0, >>> type(Color.RED)9 Thành viên có thể được kết hợp bằng cách sử dụng các toán tử bitwise (&, |, ^, ~). Không giống như >>> print(Color.RED.name) RED0, chúng không thể được kết hợp với, cũng như không so sánh với bất kỳ liệt kê >>> type(Color.RED)9 nào khác, cũng không phải >>> print(Color.RED.name) RED7. Mặc dù có thể chỉ định các giá trị trực tiếp nhưng nó được khuyến nghị sử dụng >>> print(Color.RED.name) RED2 làm giá trị và để >>> type(Color.RED)9 chọn một giá trị thích hợp. Mới trong phiên bản 3.6. Mẫu >>> print(Color.RED.name) RED0 Lớp: >>> print(Color.RED.name) RED42 Cũng có thể đặt tên cho các kết hợp: >>> print(Color.RED.name) RED47 Một sự khác biệt quan trọng khác giữa >>> print(Color.RED.name) RED0 và >>> type(Color.RED)7 là nếu không có cờ được đặt (giá trị là 0), đánh giá boolean của nó là >>> print(Color.RED.name) RED143: >>> print(Color.RED.name) RED44 Bởi vì >>> print(Color.RED.name) RED0 Các thành viên cũng là các lớp con của >>> print(Color.RED.name) RED7 nên họ có thể được kết hợp với họ: >>> print(Color.RED.name) RED45 Lá cờ¶ Biến thể cuối cùng là>>> type(Color.RED)9. Giống như >>> print(Color.RED.name) RED0, >>> type(Color.RED)9 Thành viên có thể được kết hợp bằng cách sử dụng các toán tử bitwise (&, |, ^, ~). Không giống như >>> print(Color.RED.name) RED0, chúng không thể được kết hợp với, cũng như không so sánh với bất kỳ liệt kê >>> type(Color.RED)9 nào khác, cũng không phải >>> print(Color.RED.name) RED7. Mặc dù có thể chỉ định các giá trị trực tiếp nhưng nó được khuyến nghị sử dụng >>> print(Color.RED.name) RED2 làm giá trị và để >>> type(Color.RED)9 chọn một giá trị thích hợp. >>> print(Color.RED.name) RED0 Lớp: >>> print(Color.RED.name) RED46 >>> print(Color.RED.name) RED0 và >>> type(Color.RED)7 là nếu không có cờ được đặt (giá trị là 0), đánh giá boolean của nó là >>> print(Color.RED.name) RED143: >>> print(Color.RED.name) RED48 >>> print(Color.RED.name) RED0 Các thành viên cũng là các lớp con của >>> print(Color.RED.name) RED7 nên họ có thể được kết hợp với họ:
Khi nào nên sử dụng Afghanistan = 93 Albania = 355 Algeria = 213 Andorra = 376 Angola = 244 Antarctica = 672 29 so với ________ 130¶>>> print(Color.RED.name) RED129 phải được sử dụng bất cứ khi nào bạn muốn tùy chỉnh giá trị thực của thành viên >>> type(Color.RED)7. Bất kỳ sửa đổi nào khác có thể đi trong >>> print(Color.RED.name) RED129 hoặc >>> print(Color.RED.name) RED130, với >>> print(Color.RED.name) RED130 được ưu tiên. Ví dụ: nếu bạn muốn chuyển một số mục cho hàm tạo, nhưng chỉ muốn một trong số chúng là giá trị: >>> type(Color.RED)20 Ví dụ thú vịTrong khi >>> type(Color.RED)7, >>> type(Color.RED)8, >>> print(Color.RED.name) RED0 và >>> type(Color.RED)9 dự kiến sẽ bao gồm phần lớn các trường hợp sử dụng, họ không thể bao gồm tất cả. Dưới đây là các công thức nấu ăn cho một số loại bảng liệt kê khác nhau có thể được sử dụng trực tiếp hoặc làm ví dụ để tạo một bản thân riêng. Bỏ qua các giá trịTrong nhiều trường hợp sử dụng, người ta không quan tâm đến giá trị thực tế của một bảng liệt kê là gì. Có một số cách để xác định loại liệt kê đơn giản này:
>>> print(Color.RED.name) RED129 để thay thế bộ tuple bằng giá trị Sử dụng bất kỳ phương pháp nào trong số này biểu thị cho người dùng rằng các giá trị này không quan trọng và cũng cho phép người ta thêm, xóa hoặc sắp xếp lại các thành viên mà không phải đánh số lại các thành viên còn lại.
|