因為枚舉成員不是有序的,所以它們只支持通過標識(identity) 和相等性 (equality) 進行比較。下面來看看 == 和 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))
輸出的結果:False?True
False?True
Error?:?'
可以看看最后的輸出結果,報了個異常,那是因為大于和小于比較運算符引發 TypeError 異常。也就是 Enum 類的枚舉是不支持大小運算符的比較的。
那么能不能讓枚舉類進行大小的比較呢?
當然是可以的,使用 IntEnum 類進行枚舉,就支持比較功能。#!/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))
看看輸出的結果:Tom
Liangdianshui
Twowater
通過輸出的結果可以看到,枚舉類的成員通過其值得大小進行了排序。也就是說可以進行大小的比較。