Skip to content

Latest commit

 

History

History
75 lines (48 loc) · 1.55 KB

File metadata and controls

75 lines (48 loc) · 1.55 KB

四、枚举的比较

因为枚举成员不是有序的,所以它们只支持通过标识(identity) 和相等性 (equality) 进行比较。下面来看看 ==is 的使用:

#!/usr/bin/env python3# -*- coding: UTF-8 -*-fromenumimportEnumclassUser(Enum): Twowater=98Liangdianshui=30Tom=12Twowater=User.TwowaterLiangdianshui=User.Liangdianshuiprint(Twowater==Liangdianshui, Twowater==User.Twowater) print(TwowaterisLiangdianshui, TwowaterisUser.Twowater) try: print('\n'.join(' '+s.nameforsinsorted(User))) exceptTypeErroraserr: print(' Error : {}'.format(err))

输出的结果:

False True False True Error : '<' not supported between instances of 'User' and 'User' 

可以看看最后的输出结果,报了个异常,那是因为大于和小于比较运算符引发 TypeError 异常。也就是 Enum 类的枚举是不支持大小运算符的比较的。

那么能不能让枚举类进行大小的比较呢?

当然是可以的,使用 IntEnum 类进行枚举,就支持比较功能。

#!/usr/bin/env python3# -*- coding: UTF-8 -*-importenumclassUser(enum.IntEnum): Twowater=98Liangdianshui=30Tom=12try: print('\n'.join(s.nameforsinsorted(User))) exceptTypeErroraserr: print(' Error : {}'.format(err)) 

看看输出的结果:

Tom Liangdianshui Twowater

通过输出的结果可以看到,枚举类的成员通过其值得大小进行了排序。也就是说可以进行大小的比较。

close