Mới trong phiên bản 3.4. Show
Mã nguồn: lib/enum.py Lib/enum.py Một bảng liệt kê:
Các liệt kê được tạo bằng cách sử dụng cú pháp >>> Color.GREEN <Color.GREEN: 2>4 hoặc bằng cách sử dụng cú pháp gọi chức năng: >>> from enum import Enum >>> # class syntax >>> class Color(Enum): ... RED = 1 ... GREEN = 2 ... BLUE = 3 >>> # functional syntax >>> Color = Enum('Color', ['RED', 'GREEN', 'BLUE']) Mặc dù chúng ta có thể sử dụng cú pháp >>> Color.GREEN <Color.GREEN: 2>4 để tạo enum, Enums không phải là các lớp Python bình thường. Xem enums khác nhau như thế nào? để biết thêm chi tiết.How are Enums different? for more details. Ghi chú Danh pháp
Nội dung mô -đun>>> Color['BLUE'] <Color.BLUE: 3>3>>> Color['BLUE'] <Color.BLUE: 3>4 cho enum và các lớp con của nó.>>> Color['BLUE'] <Color.BLUE: 3>5 Mới trong phiên bản 3.6: >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]0, >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]2, >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 Mới trong phiên bản 3.11: >>> Color['BLUE'] <Color.BLUE: 3>8, >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]7, >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]6, >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]2, >>> from datetime import date >>> class Weekday(Enum): ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 7 ... @classmethod ... def today(cls): ... print('today is %s' % cls(date.today().isoweekday()).name) >>> dir(Weekday.SATURDAY) ['__class__', '__doc__', '__eq__', '__hash__', '__module__', 'name', 'today', 'value']8, >>> from datetime import date >>> class Weekday(Enum): ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 7 ... @classmethod ... def today(cls): ... print('today is %s' % cls(date.today().isoweekday()).name) >>> dir(Weekday.SATURDAY) ['__class__', '__doc__', '__eq__', '__hash__', '__module__', 'name', 'today', 'value']9, >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 60, >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 61, >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 62 Loại dữ liệu¶classenum.EnumType¶ enum.EnumType¶EnumType là metaclass cho các liệt kê enum. Có thể phân lớp enumtype - xem phân lớp enumtype để biết chi tiết.metaclass for enum enumerations. It is possible to subclass EnumType – see Subclassing EnumType for details. EnumType chịu trách nhiệm thiết lập đúng các phương thức >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 63, >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64, >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 65 và >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 66 trên Enum cuối cùng, cũng như tạo các thành viên Enum, xử lý đúng các bản sao, cung cấp lặp lại lớp Enum, v.v. __Contains __ (CLS, thành viên) ¶(cls, member)¶ Trả về >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 67 Nếu thành viên thuộc về >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 68: >>> some_var = Color.RED >>> some_var in Color True Ghi chú Danh pháp Lớp>>> Color.GREEN <Color.GREEN: 2>6 là một liệt kê (hoặc enum)(cls)¶ Các thuộc tính >>> Color.GREEN <Color.GREEN: 2>7, >>> Color.GREEN <Color.GREEN: 2>8, v.v., là các thành viên (hoặc thành viên) liệt kê và là hằng số chức năng. >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']Các thành viên ENUM có tên và giá trị (tên của >>> Color.GREEN <Color.GREEN: 2>7 là >>> Color['BLUE'] <Color.BLUE: 3>0, giá trị của >>> Color['BLUE'] <Color.BLUE: 3>1 là >>> Color['BLUE'] <Color.BLUE: 3>2, v.v.)(cls, name)¶ Nội dung mô -đun >>> Color.GREEN <Color.GREEN: 2> >>> Color['BLUE'] <Color.BLUE: 3>4 cho enum và các lớp con của nó.(cls, name)¶ Lớp cơ sở để tạo các hằng số được liệt kê. >>> Color['BLUE'] <Color.BLUE: 3>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 >>> Color['BLUE'] <Color.BLUE: 3>7. (Ghi chú)(cls)¶ 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 >>> Color['BLUE'] <Color.BLUE: 3>9. (Ghi chú) >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]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 >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]0.(cls)¶ 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 toán tử bitwise mà không mất tư cách thành viên >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]2 của họ. >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]2 Thành viên cũng là các lớp con của >>> Color['BLUE'] <Color.BLUE: 3>7. (Ghi chú) Một bảng liệt kê với các giá trị >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]8, >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]9 và >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]0, để sử dụng với >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]1 để đảm bảo các ràng buộc khác nhau được đáp ứng bởi một bảng liệt kê nhất định.(cls)¶ Một bảng liệt kê với các giá trị >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]3, >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]4, >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]5 và >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]6 cho phép kiểm soát chi tiết hơn về cách các giá trị không hợp lệ được xử lý trong một bảng liệt kê. >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]Các trường hợp được thay thế bằng một giá trị thích hợp cho các thành viên Enum. >>> Color['BLUE'] <Color.BLUE: 3>8 mặc định cho phiên bản có tên dưới của tên thành viên, trong khi các enum khác mặc định là 1 và tăng từ đó. enum.Enum¶ Cho phép các thành viên >>> Color['BLUE'] <Color.BLUE: 3>5 có các thuộc tính mà không mâu thuẫn với tên thành viên. 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.¶ Bộ trang trí lớp Enum kiểm tra các ràng buộc có thể chọn người dùng trên một bảng liệt kê. >>> Color.BLUE.name 'BLUE'Biến >>> Color.BLUE.name 'BLUE'4 thành một thành viên. Có thể được sử dụng như một người trang trí.¶ Không biến >>> Color.BLUE.name 'BLUE'4 thành một thành viên. Có thể được sử dụng như một người trang trí. Ghi chú Danh pháp Lớp >>> Color.GREEN <Color.GREEN: 2>6 là một liệt kê (hoặc enum) _phớt lờ_¶¶ >>> some_var = Color.RED >>> some_var in Color True09 chỉ được sử dụng trong quá trình tạo và được loại bỏ khỏi bảng liệt kê sau khi tạo ra hoàn tất. >>> some_var = Color.RED >>> some_var in Color True09 là danh sách các tên sẽ không trở thành thành viên và tên của họ cũng sẽ bị xóa khỏi bảng liệt kê đã hoàn thành. Xem thời gian cho một ví dụ.TimePeriod for an example. __call __ (cls, value, name = none, \*, module = none, Qualname = none, type = none, start = 1, boundary = none)(cls, value, names=None, \*, module=None, qualname=None, type=None, start=1, boundary=None)¶ Phương pháp này được gọi theo hai cách khác nhau:
Cách xử lý các giá trị ngoài phạm vi từ các hoạt động bit (chỉ >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]0) >>> from datetime import date >>> class Weekday(Enum): ... MONDAY = 1 ... TUESDAY = 2 ... WEDNESDAY = 3 ... THURSDAY = 4 ... FRIDAY = 5 ... SATURDAY = 6 ... SUNDAY = 7 ... @classmethod ... def today(cls): ... print('today is %s' % cls(date.today().isoweekday()).name) >>> dir(Weekday.SATURDAY) ['__class__', '__doc__', '__eq__', '__hash__', '__module__', 'name', 'today', 'value']__dir __ (bản thân) ¶(name, start, count, last_values)¶
Số lượng thành viên hiện được xác định, không bao gồm số này. >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 6Một danh sách các giá trị trước đó.(cls, \**kwds)¶ Một staticmethod được sử dụng để xác định giá trị tiếp theo được trả về bởi >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7: __init_subclass __ (cls, \ ** kwds) ¶(cls, value)¶ Một lớp được sử dụng để cấu hình thêm các lớp con tiếp theo. Theo mặc định, không làm gì cả. >>> some_var = Color.RED >>> some_var in Color True0 _missing_ (cls, giá trị) ¶(self)¶ Một lớp học để tìm kiếm các giá trị không tìm thấy trong CLS. Theo mặc định, nó không làm gì cả, nhưng có thể được ghi đè để thực hiện hành vi tìm kiếm tùy chỉnh: >>> some_var = Color.RED >>> some_var in Color True1 __repr __ (bản thân) ¶(self)¶ Trả về chuỗi được sử dụng cho các cuộc gọi repr (). Theo mặc định, trả về tên enum, tên thành viên và giá trị, nhưng có thể bị ghi đè: >>> some_var = Color.RED >>> some_var in Color True2 __str __ (bản thân) ¶(self)¶ Trả về chuỗi được sử dụng cho các cuộc gọi str (). Theo mặc định, trả về tên enum và tên thành viên, nhưng có thể bị ghi đè: >>> some_var = Color.RED >>> some_var in Color True3 __format __ (tự) ¶ Trả về chuỗi được sử dụng cho các cuộc gọi format () và f-string. Theo mặc định, trả về >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 trả về, nhưng có thể bị ghi đè: Ghi chú enum.IntEnum¶ Sử dụng >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với >>> Color['BLUE'] <Color.BLUE: 3>5 dẫn đến các số nguyên có giá trị ngày càng tăng, bắt đầu từ >>> some_var = Color.RED >>> some_var in Color True19. >>> some_var = Color.RED >>> some_var in Color True4 classenum.intenum¶ Intenum giống như enum, nhưng các thành viên của nó cũng là số nguyên và có thể được sử dụng ở bất cứ đâu mà một số nguyên có thể được sử dụng. Nếu bất kỳ hoạt động số nguyên nào được thực hiện với thành viên Intenum, giá trị kết quả sẽ mất trạng thái liệt kê. Ghi chú >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 is now >>> some_var = Color.RED >>> some_var in Color True24 to better support the replacement of existing constants use-case. >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 65 was already >>> some_var = Color.RED >>> some_var in Color True26 for that same reason. Sử dụng >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với >>> Color['BLUE'] <Color.BLUE: 3>6 dẫn đến các số nguyên có giá trị ngày càng tăng, bắt đầu từ >>> some_var = Color.RED >>> some_var in Color True19.enum.StrEnum¶ Đã thay đổi trong phiên bản 3.11: >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 hiện là >>> some_var = Color.RED >>> some_var in Color True24 để hỗ trợ tốt hơn cho việc thay thế trường hợp sử dụng hằng số hiện tại. >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 65 đã là >>> some_var = Color.RED >>> some_var in Color True26 vì lý do tương tự. __format __ (tự) ¶ Trả về chuỗi được sử dụng cho các cuộc gọi format () và f-string. Theo mặc định, trả về >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 trả về, nhưng có thể bị ghi đè: __format __ (tự) ¶ Trả về chuỗi được sử dụng cho các cuộc gọi format () và f-string. Theo mặc định, trả về >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 trả về, nhưng có thể bị ghi đè: __format __ (tự) ¶ Trả về chuỗi được sử dụng cho các cuộc gọi format () và f-string. Theo mặc định, trả về >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 trả về, nhưng có thể bị ghi đè: Ghi chú Sử dụng>>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với >>> Color['BLUE'] <Color.BLUE: 3>5 dẫn đến các số nguyên có giá trị ngày càng tăng, bắt đầu từ >>> some_var = Color.RED >>> some_var in Color True19.enum.Flag¶ classenum.intenum¶ Intenum giống như enum, nhưng các thành viên của nó cũng là số nguyên và có thể được sử dụng ở bất cứ đâu mà một số nguyên có thể được sử dụng. Nếu bất kỳ hoạt động số nguyên nào được thực hiện với thành viên Intenum, giá trị kết quả sẽ mất trạng thái liệt kê.(self, value)¶Ghi chú >>> some_var = Color.RED >>> some_var in Color True5 __iter__(self): Sử dụng >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với >>> Color['BLUE'] <Color.BLUE: 3>6 dẫn đến các số nguyên có giá trị ngày càng tăng, bắt đầu từ >>> some_var = Color.RED >>> some_var in Color True19. >>> some_var = Color.RED >>> some_var in Color True6 Đã thay đổi trong phiên bản 3.11: classenum.strenum¶ >>> some_var = Color.RED >>> some_var in Color True7 __bool__(self): Strenum giống như enum, nhưng các thành viên của nó cũng là chuỗi và có thể được sử dụng ở hầu hết các nơi giống như một chuỗi có thể được sử dụng. Kết quả của bất kỳ hoạt động chuỗi nào được thực hiện trên hoặc với thành viên Strenum không phải là một phần của bảng liệt kê. >>> some_var = Color.RED >>> some_var in Color True8 Có những vị trí trong stdlib kiểm tra chính xác >>> Color['BLUE'] <Color.BLUE: 3>9 thay vì phân lớp >>> Color['BLUE'] <Color.BLUE: 3>9 (tức là >>> some_var = Color.RED >>> some_var in Color True29 thay vì >>> some_var = Color.RED >>> some_var in Color True30) và ở những vị trí đó, bạn sẽ cần sử dụng >>> some_var = Color.RED >>> some_var in Color True31.(self, other)¶ Sử dụng >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với >>> Color['BLUE'] <Color.BLUE: 3>8 kết quả trong tên thành viên có hàm lượng thấp hơn làm giá trị. >>> some_var = Color.RED >>> some_var in Color True9 >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 là >>> some_var = Color.RED >>> some_var in Color True35 để hỗ trợ tốt hơn cho việc thay thế trường hợp sử dụng hằng số hiện có. >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 65 cũng như vậy >>> some_var = Color.RED >>> some_var in Color True37 vì lý do tương tự.(self, other)¶ Mới trong phiên bản 3.11. >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']0 classenum.flag¶(self, other)¶ Các thành viên cờ hỗ trợ các toán tử bitwise >>> some_var = Color.RED >>> some_var in Color True38 (và), >>> some_var = Color.RED >>> some_var in Color True39 (hoặc), >>> some_var = Color.RED >>> some_var in Color True40 (XOR) và >>> some_var = Color.RED >>> some_var in Color True41 (đảo ngược); Kết quả của các nhà khai thác đó là thành viên của việc liệt kê. >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']1 __invert__(self): __contains __ (bản thân, giá trị) ¶ >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']2 Trả về đúng nếu giá trị tự mình:()¶ Trả về tất cả các thành viên không phải là Alias: Ghi chú Sử dụng >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với kết quả >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]0 trong các số nguyên là sức mạnh của hai, bắt đầu từ >>> some_var = Color.RED >>> some_var in Color True19. Thay đổi trong phiên bản 3.11: repr () của các cờ có giá trị bằng không đã thay đổi. Nó bây giờ là::The repr() of zero-valued flags has changed. It is now:: classenum.intflag¶enum.IntFlag¶Intflag giống như cờ, nhưng các thành viên của nó cũng là số nguyên và có thể được sử dụng ở bất cứ đâu mà một số nguyên có thể được sử dụng. >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']3 Nếu bất kỳ hoạt động số nguyên nào được thực hiện với thành viên INTFLAG, kết quả không phải là Intflag: Nếu một hoạt động cờ được thực hiện với thành viên Intflag và:
Bản repr () của các cờ có giá trị không tên đã thay đổi. Nó bây giờ là: Ghi chú Sử dụng >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]7 với >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]2 dẫn đến các số nguyên là sức mạnh của hai, bắt đầu từ >>> some_var = Color.RED >>> some_var in Color True19. Đã thay đổi trong phiên bản 3.11: >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 64 is now >>> some_var = Color.RED >>> some_var in Color True24 to better support the replacement of existing constants use-case. >>> from enum import auto >>> class PowersOfThree(Enum): ... @staticmethod ... def _generate_next_value_(name, start, count, last_values): ... return (count + 1) * 3 ... FIRST = auto() ... SECOND = auto() >>> PowersOfThree.SECOND.value 65 was already >>> some_var = Color.RED >>> some_var in Color True26 for that same reason. Đảo ngược một >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]2 bây giờ trả về một giá trị dương là sự kết hợp của tất cả các cờ không trong cờ đã cho, thay vì giá trị âm. Điều này phù hợp với hành vi >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]0 hiện có. classenum.reprenum¶enum.ReprEnum¶ >>> some_var = Color.RED >>> some_var in Color True56 sử dụng >>> Color.BLUE.name 'BLUE'9 của >>> Color['BLUE'] <Color.BLUE: 3>5, nhưng >>> Color.BLUE.name 'BLUE'8 của loại dữ liệu hỗn hợp:
Kế thừa từ >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]6 để giữ >>> some_var = Color.RED >>> some_var in Color True66 của loại dữ liệu hỗn hợp thay vì sử dụng ________ 45-Default >>> Color.BLUE.name 'BLUE'8. Mới trong phiên bản 3.11. classenum.enumcheck¶ enum.EnumCheck¶Enumcheck chứa các tùy chọn được sử dụng bởi >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]1 Trình trang trí để đảm bảo các ràng buộc khác nhau; Các ràng buộc không thành công dẫn đến >>> some_var = Color.RED >>> some_var in Color True70. ĐỘC NHẤT¶¶ Đảm bảo rằng mỗi giá trị chỉ có một tên: >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']4 TIẾP DIỄN¶¶ Đảm bảo rằng không có giá trị thiếu giữa thành viên có giá trị thấp nhất và thành viên có giá trị cao nhất: >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']5 Tên_flags¶¶ Đảm bảo rằng bất kỳ nhóm/mặt nạ cờ nào chỉ chứa cờ có tên - hữu ích khi các giá trị được chỉ định thay vì được tạo bởi >>> some_var = Color.RED >>> some_var in Color True71 >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']6 Ghi chú Liên tục và được đặt tên_flags được thiết kế để hoạt động với các thành viên có giá trị số nguyên. Mới trong phiên bản 3.11. classenum.enumcheck¶enum.FlagBoundary¶Enumcheck chứa các tùy chọn được sử dụng bởi >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]1 Trình trang trí để đảm bảo các ràng buộc khác nhau; Các ràng buộc không thành công dẫn đến >>> some_var = Color.RED >>> some_var in Color True70. ĐỘC NHẤT¶¶ Đảm bảo rằng mỗi giá trị chỉ có một tên: >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']7 TIẾP DIỄN¶¶ Đảm bảo rằng không có giá trị thiếu giữa thành viên có giá trị thấp nhất và thành viên có giá trị cao nhất: >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']8 Tên_flags¶¶ Đảm bảo rằng bất kỳ nhóm/mặt nạ cờ nào chỉ chứa cờ có tên - hữu ích khi các giá trị được chỉ định thay vì được tạo bởi >>> some_var = Color.RED >>> some_var in Color True71 >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']9 Liên tục và được đặt tên_flags được thiết kế để hoạt động với các thành viên có giá trị số nguyên.¶ classenum.flagboundary¶ >>> Color.GREEN <Color.GREEN: 2>0 Mới trong phiên bản 3.11. classenum.enumcheck¶Enumcheck chứa các tùy chọn được sử dụng bởi >>> list(reversed(Color)) [<Color.BLUE: 3>, <Color.GREEN: 2>, <Color.RED: 1>]1 Trình trang trí để đảm bảo các ràng buộc khác nhau; Các ràng buộc không thành công dẫn đến >>> some_var = Color.RED >>> some_var in Color True70. ĐỘC NHẤT¶ Đảm bảo rằng mỗi giá trị chỉ có một tên:
Các giá trị ngoài phạm vi khiến >>> some_var = Color.RED >>> some_var in Color True86, >>> some_var = Color.RED >>> some_var in Color True90, >>> some_var = Color.RED >>> some_var in Color True91 TUÂN THỦ¶ >>> some_var = Color.RED >>> some_var in Color True09 Các giá trị ngoài phạm vi có các giá trị không hợp lệ bị xóa, để lại giá trị cờ hợp lệ:Loại ra enum.auto¶Các giá trị ngoài phạm vi mất tư cách thành viên cờ của họ và trở lại >>> Color['BLUE'] <Color.BLUE: 3>7. Đây là mặc định cho >>> list(Color) [<Color.RED: 1>, <Color.GREEN: 2>, <Color.BLUE: 3>]2: GIỮ CHO¶
>>> some_var = Color.RED >>> some_var in Color True91 có thể được ghi đè để tùy chỉnh các giá trị được sử dụng bởi Auto. Ghi chú Trong 3.13, >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']09 mặc định sẽ luôn trả về giá trị thành viên cao nhất được tăng thêm 1 và sẽ thất bại nếu bất kỳ thành viên nào là loại không tương thích. @enum.property¶enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên. Ghi chú Trong 3.13, >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']09 mặc định sẽ luôn trả về giá trị thành viên cao nhất được tăng thêm 1 và sẽ thất bại nếu bất kỳ thành viên nào là loại không tương thích. @enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên.enum.unique¶Tài sản và thành viên phải được xác định trong các lớp riêng biệt; Ví dụ: các thuộc tính giá trị và tên được xác định trong lớp Enum và các lớp con enum có thể xác định các thành viên có tên >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']10 và >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']11. >>> Color.GREEN <Color.GREEN: 2>1 Mới trong phiên bản 3.11.enum.verify¶ @enum.unique¶ @enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên.enum.member¶Tài sản và thành viên phải được xác định trong các lớp riêng biệt; Ví dụ: các thuộc tính giá trị và tên được xác định trong lớp Enum và các lớp con enum có thể xác định các thành viên có tên >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']10 và >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']11. @enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên.enum.nonmember¶Tài sản và thành viên phải được xác định trong các lớp riêng biệt; Ví dụ: các thuộc tính giá trị và tên được xác định trong lớp Enum và các lớp con enum có thể xác định các thành viên có tên >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']10 và >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']11. @enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên.enum.global_enum¶Tài sản và thành viên phải được xác định trong các lớp riêng biệt; Ví dụ: các thuộc tính giá trị và tên được xác định trong lớp Enum và các lớp con enum có thể xác định các thành viên có tên >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']10 và >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']11. @enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên.show_flag_values(value)¶Tài sản và thành viên phải được xác định trong các lớp riêng biệt; Ví dụ: các thuộc tính giá trị và tên được xác định trong lớp Enum và các lớp con enum có thể xác định các thành viên có tên >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']10 và >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']11. @enum.property¶ Một nhà trang trí tương tự như tài sản tích hợp, nhưng đặc biệt để liệt kê. Nó cho phép các thuộc tính thành viên có cùng tên với chính các thành viên.Tài sản và thành viên phải được xác định trong các lớp riêng biệt; Ví dụ: các thuộc tính giá trị và tên được xác định trong lớp Enum và các lớp con enum có thể xác định các thành viên có tên >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']10 và >>> dir(Color) ['BLUE', 'GREEN', 'RED', '__class__', '__contains__', '__doc__', '__getitem__', '__init_subclass__', '__iter__', '__len__', '__members__', '__module__', '__name__', '__qualname__']11.
Lớp enum trong Python là gì?Enum là một lớp trong Python để tạo các 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. Các thành viên của một bảng liệt kê có thể được so sánh bởi các anmes tượng trưng này và bản thân sự liệt kê có thể được lặp lại.a class in python for creating enumerations, which are a set of symbolic names (members) bound to unique, constant values. The members of an enumeration can be compared by these symbolic anmes, and the enumeration itself can be iterated over.
Mục đích của enum trong Python là gì?Mô-đun ENUM xác định loại bảng liệt kê có mục đích chung với khả năng lặp và so sánh.Bạn có thể sử dụng loại này để tạo các bộ hằng số được đặt tên mà bạn có thể sử dụng để thay thế các chữ của các loại dữ liệu phổ biến, chẳng hạn như số và chuỗi.to create sets of named constants that you can use to replace literals of common data types, such as numbers and strings.
Lớp enum là gì?Enum là một "lớp" đặc biệt đại diện cho một nhóm các hằng số (các biến không thể thay đổi, như các biến cuối cùng).Để tạo một enum, hãy sử dụng từ khóa Enum (thay vì lớp hoặc giao diện) và tách các hằng số bằng dấu phẩy.a special "class" that represents a group of constants (unchangeable variables, like final variables). To create an enum , use the enum keyword (instead of class or interface), and separate the constants with a comma.
Việc sử dụng lớp enum là gì?Loại Enum là một loại dữ liệu đặc biệt cho phép một biến trở thành một tập hợp các hằng số được xác định trước.Biến phải bằng một trong các giá trị đã được xác định trước cho nó.Các ví dụ phổ biến bao gồm các hướng la bàn (giá trị của Bắc, Nam, Đông và Tây) và những ngày trong tuần.enables for a variable to be a set of predefined constants. The variable must be equal to one of the values that have been predefined for it. Common examples include compass directions (values of NORTH, SOUTH, EAST, and WEST) and the days of the week. |