Ich habe eine einfache ENUM in Python, die wie folgt aussieht:Wie kann ich den nächsten und vorherigen Wert in einem Python Enum elegant finden?
from enum import Enum
class MyEnum(Enum):
#All members have increasing non-consecutive integer values.
A = 0
B = 2
C = 10
D = 18
...
Funktionen pred()
und succ()
, die ein Mitglied der MyEnum
Rückkehr das Mitglied des MyEnum
, die dem gegebenen Element voran I will und es gelingt ihm, bzw. (wie the functions of the same name in Haskell). Zum Beispiel sollten succ(MyEnum.B)
und pred(MyEnum.D)
beide MyEnum.C
zurückgeben. Eine Ausnahme kann ausgelöst werden, wenn succ
aufgerufen wird, wenn das letzte Mitglied von pred
am ersten Mitglied aufgerufen wird.
Es scheint keine eingebaute Methode zu sein, dies zu tun, und während ich iter(MyEnum)
aufrufen kann, um über die Werte zu iterieren, muss es von Anfang an durch die gesamte enum gehen. Ich könnte wahrscheinlich eine schlampige Schleife implementieren, um das alleine zu erreichen, aber ich weiß, dass es auf dieser Seite einige echte Python-Gurus gibt, also frage ich Sie: Gibt es einen besseren Ansatz?
Der Zweck 'enum' in Python ist ein Datentyp zu schaffen, die anstelle von„magischen Zahlen verwendet werden können, "und so, nicht wirklich einen mathematischen Datentyp zu bieten, der aufzählbaren Mengen entspricht. Der Zweck von Haskells "enum" ist also etwas anders. Auf jeden Fall hindert Sie nichts daran, 'pred' und' succ' als Methoden von 'MyEnum' zu implementieren. – Bakuriu
Einfache Übersetzung der Antwort in dieser Frage zur Verfügung gestellt. –