列挙型の比較
列挙メンバーは順序付けされていないため、同一性と等価性による比較のみをサポートします。 == の使用法を見てみましょう:
#!/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 : '<' not supported between instances of 'User' and 'User'
最終的な出力結果を見て、例外を報告できます。 「大なり」と「小なり」の比較演算子は、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
出力結果から、列挙型クラスのメンバーが値のサイズによって並べ替えられていることがわかります。つまり、大きさの比較ができるのです。
新しいファイル
プレビュー
Clear
- おすすめコース
- コースウェアのダウンロード
現時点ではコースウェアはダウンロードできません。現在スタッフが整理中です。今後もこのコースにもっと注目してください〜
このコースを視聴した生徒はこちらも学んでいます
















