나는 다음과 같습니다 파이썬에서 간단한 열거 있습니다파이썬 열거 형에서 다음 값과 이전 값을 어떻게 우아하게 찾을 수 있습니까?
내가 원하는from enum import Enum
class MyEnum(Enum):
#All members have increasing non-consecutive integer values.
A = 0
B = 2
C = 10
D = 18
...
기능 pred()
및 MyEnum
반환 선행과 (와 마찬가지로 각각 지정된 요소를, 성공 MyEnum
의 멤버의 멤버를 제공 succ()
the functions of the same name in Haskell). 예를 들어 succ(MyEnum.B)
및 pred(MyEnum.D)
은 모두 MyEnum.C
을 반환해야합니다. 첫 번째 구성원에서 pred
의 마지막 구성원을 호출 할 때 succ
이 호출되면 예외가 발생할 수 있습니다.
이 작업을 수행하는 메소드가 내장되어 있지 않은 것 같습니다. 그리고 iter(MyEnum)
을 호출하여 값 전체를 반복 할 수 있지만 처음부터 전체 열거 형을 거쳐야합니다. 아마 독자적으로이 작업을 수행하기 위해 부실 루프를 구현할 수는 있지만이 사이트에는 실제 파이썬 전문가가 있다는 것을 알고 있습니다. 그래서 당신에게 묻습니다. 더 나은 접근 방법이 있습니까? 분명히이 효율적이다
>>> import myenums
>>> myenums.Sequential.B.succ()
<Sequential.C: 4>
>>> myenums.Sequential.B.succ().succ()
<Sequential.D: 8>
>>> myenums.Sequential.B.succ().succ().pred()
<Sequential.C: 4>
실제로 계산하는 간단한 방법이있는 경우에만 : 당신이 Enum
클래스 내부 succ
및 pred
방법을 제공 할 수
"그런 식으로 열거 가능한 세트에 해당하는 수학적 데이터 유형을 제공하는 것은 아닙니다. 하스켈의'enum'의 목적은 약간 다릅니다. 어쨌든'myEnum'의 메소드로'pred'와'succ'를 구현하는 것을 막을 수는 없습니다. – Bakuriu
그 질문에서 대답의 간단한 번역을 제공했습니다. –