亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

枚舉的比較

因?yàn)槊杜e成員不是有序的,所以它們只支持通過(guò)標(biāo)識(shí)(identity) 和相等性 (equality) 進(jìn)行比較。下面來(lái)看看 == 和 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)了個(gè)異常,那是因?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

通過(guò)輸出的結(jié)果可以看到,枚舉類的成員通過(guò)其值得大小進(jìn)行了排序。也就是說(shuō)可以進(jìn)行大小的比較。

繼續(xù)學(xué)習(xí)
||
提交重置代碼