Da Aufzählungsmitglieder nicht geordnet sind, unterstützen sie nur Vergleiche nach Identität und Gleichheit. Werfen wir einen Blick auf die Verwendung von == und lautet:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum class User(Enum): Twowater = 98 Liangdianshui = 30 Tom = 12 Twowater = User.Twowater Liangdianshui = User.Liangdianshui print(Twowater == Liangdianshui, Twowater == User.Twowater) print(Twowater is Liangdianshui, Twowater is User.Twowater) try: print('\n'.join(' ' + s.name for s in sorted(User))) except TypeError as err: print(' Error : {}'.format(err))
Ausgabeergebnis:
False True False True Error : '<' not supported between instances of 'User' and 'User'
Sie können sich das endgültige Ausgabeergebnis ansehen und eine Ausnahme melden. Das liegt an der größeren Als- und Kleiner-als-Vergleichsoperatoren lösen eine TypeError-Ausnahme aus. Das heißt, die Aufzählung der Enum-Klasse unterstützt keinen Vergleich des Größenoperators.
Kann die Aufzählungsklasse also zum Vergleichen von Größen verwendet werden?
Natürlich ist es möglich, die IntEnum-Klasse zur Aufzählung zu verwenden, um die Vergleichsfunktion zu unterstützen.
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- import enum class User(enum.IntEnum): Twowater = 98 Liangdianshui = 30 Tom = 12 try: print('\n'.join(s.name for s in sorted(User))) except TypeError as err: print(' Error : {}'.format(err))
Sehen Sie sich die Ausgabeergebnisse an:
Tom Liangdianshui Twowater
Wie Sie den Ausgabeergebnissen entnehmen können, sind die Mitglieder der Aufzählungsklasse nach ihrer Wertgröße sortiert. Mit anderen Worten: Größenvergleiche sind möglich.
nächsten Abschnitt