Vergleich von A...LOGIN

Vergleich von Aufzählungen

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
KapitelKursunterlagen