しかし、場合によっては列挙型の制御が必要になる場合があります。その場合は、このニーズを満たすために Enum からカスタム クラスを派生できます。上記の例を変更すると:
#!/usr/bin/env python3 # -*- coding: UTF-8 -*- from enum import Enum, unique Enum('Month', ('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec')) # @unique 装饰器可以帮助我们检查保证没有重复值 @unique class Month(Enum): Jan = 'January' Feb = 'February' Mar = 'March' Apr = 'April' May = 'May' Jun = 'June' Jul = 'July' Aug = 'August' Sep = 'September ' Oct = 'October' Nov = 'November' Dec = 'December' if __name__ == '__main__': print(Month.Jan, '----------', Month.Jan.name, '----------', Month.Jan.value) for name, member in Month.__members__.items(): print(name, '----------', member, '----------', member.value)
出力結果は次のようになります:
上記の例を通じて、列挙モジュールが反復子を定義していることがわかります。 (インテレータ) および比較 (比較) 関数の列挙型。具体的な整数や文字列を使用する代わりに、値に対して明確に定義されたシンボルを作成するために使用できます。
次のセクション