Oleh kerana ahli enumerasi tidak dipesan, mereka hanya menyokong perbandingan mengikut identiti dan kesaksamaan. Mari kita lihat penggunaan == dan ialah:
#!/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))
Hasil keluaran:
False True False True Error : '<' not supported between instances of 'User' and 'User'
Anda boleh melihat hasil keluaran akhir dan melaporkan pengecualian Itu kerana operator perbandingan yang lebih besar daripada dan kurang daripada menimbulkan pengecualian TypeError. Maksudnya, penghitungan kelas Enum tidak menyokong perbandingan pengendali saiz.
Jadi bolehkah kelas enumerasi digunakan untuk membandingkan saiz?
Sudah tentu boleh menggunakan kelas IntEnum untuk penghitungan menyokong fungsi perbandingan.
#!/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))
Lihat hasil keluaran:
Tom Liangdianshui Twowater
Anda boleh lihat daripada hasil keluaran bahawa ahli kelas penghitungan diisih mengikut saiz nilai mereka. Dengan kata lain, perbandingan saiz boleh dibuat.
bahagian seterusnya