Comparaison des énumérations
Parce que les membres de l'énumération ne sont pas ordonnés, ils ne prennent en charge que la comparaison par identité et égalité. Jetons un coup d'œil à l'utilisation de == et est :
#!/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))
Le résultat de sortie :
False True False True Error : '<' not supported between instances of 'User' and 'User'
Vous pouvez consulter le résultat de sortie final et signaler une exception, car les opérateurs de comparaison supérieur à et inférieur à génèrent des exceptions TypeError. Autrement dit, l’énumération de la classe Enum ne prend pas en charge la comparaison de l’opérateur de taille.
Alors, les classes de dénombrement peuvent-elles être utilisées pour comparer les tailles ?
Bien sûr, c'est possible. L'utilisation de la classe IntEnum pour l'énumération prend en charge la fonction de comparaison.
#!/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))
Regardez les résultats de sortie :
Tom Liangdianshui Twowater
Vous pouvez voir dans les résultats de sortie que les membres de la classe d'énumération sont triés en fonction de la taille de leur valeur. En d’autres termes, des comparaisons de tailles peuvent être effectuées.