Perbandingan penghitungan

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.

Meneruskan pembelajaran
  • Cadangan kursus
  • Muat turun perisian kursus