列舉的比較
因?yàn)槊杜e成員不是有序的,所以它們只支援透過標(biāo)識(identity) 和相等性 (equality) 進(jìn)行比較。下面來看看== 和is 的使用:
#!/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))
輸出的結(jié)果:
False True False True Error : '<' not supported between instances of 'User' and 'User'
可以看看最後的輸出結(jié)果,報(bào)了個異常,那是因?yàn)榇箪逗托§侗容^運(yùn)算符引發(fā)TypeError 異常。也就是 Enum 類別的枚舉是不支援大小運(yùn)算子的比較的。
那麼能不能讓枚舉類別進(jìn)行大小的比較呢?
當(dāng)然是可以的,使用 IntEnum 類別進(jìn)行枚舉,就支援比較功能。
#!/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))
看看輸出的結(jié)果:
Tom Liangdianshui Twowater
透過輸出的結(jié)果可以看到,枚舉類別的成員透過其值得大小進(jìn)行了排序。也就是說可以進(jìn)行大小的比較。