Tôi có một enum đơn giản bằng Python trông như thế này:Làm thế nào tôi có thể tìm thấy giá trị tiếp theo và trước đó trong Python Enum một cách tao nhã?
from enum import Enum
class MyEnum(Enum):
#All members have increasing non-consecutive integer values.
A = 0
B = 2
C = 10
D = 18
...
Tôi muốn chức năng pred()
và succ()
mà đưa ra một thành viên của MyEnum
trở lại các thành viên của MyEnum
đi trước và thành công các yếu tố nhất định, tương ứng (giống như the functions of the same name in Haskell). Ví dụ: succ(MyEnum.B)
và pred(MyEnum.D)
cả hai phải trả lại MyEnum.C
. Một ngoại lệ có thể được nêu ra nếu succ
được gọi vào thành viên cuối cùng của số pred
được gọi vào thành viên đầu tiên.
Có vẻ như không có bất kỳ phương thức tích hợp nào để thực hiện việc này và trong khi tôi có thể gọi iter(MyEnum)
để lặp qua các giá trị mà nó phải trải qua toàn bộ enum ngay từ đầu. Tôi có thể có thể thực hiện một vòng lặp cẩu thả để thực hiện điều này một mình, nhưng tôi biết có một số chuyên gia thực sự của Python trên trang này, vì vậy với bạn tôi hỏi: liệu có cách tiếp cận tốt hơn không?
Mục đích của 'enum' bằng Python là để cung cấp một kiểu dữ liệu có thể được sử dụng thay cho "con số ma thuật "và như vậy, không thực sự cung cấp loại dữ liệu toán học tương ứng với các tập hợp đếm được. Vì vậy, mục đích của 'enum' của Haskell hơi khác một chút. Trong mọi trường hợp, không có gì ngăn cản bạn thực hiện 'pred' và' succ' làm phương thức 'MyEnum'. – Bakuriu
Cung cấp bản dịch đơn giản của câu trả lời trong câu hỏi đó. –