標準ライブラリにあるEnumクラスにより、Enumを使用することができる。
列挙型は定数を表すために使われるため、Enumのメンバの名前は大文字にすることが推奨される。
次のコードで挙動を確認することができる。詳細については列挙型 HOWTOにわかりやすくまとめられている。
from enum import Enum, auto class Colors(Enum): """ >>> print(Colors.GREEN) Colors.GREEN >>> Colors.GREEN <Colors.GREEN: 2> >>> Colors(2) <Colors.GREEN: 2> >>> Colors["GREEN"] <Colors.GREEN: 2> >>> Colors(2).name 'GREEN' >>> Colors(2).value 2 >>> Colors["MIDORI"] # MIDORIはGREENの別名 <Colors.GREEN: 2> >>> Colors.MIDORI # MIDORIはGREENの別名 <Colors.GREEN: 2> >>> [color for color in Colors] [<Colors.RED: 1>, <Colors.GREEN: 2>, <Colors.BLUE: 3>] >>> {color.name: color.value for color in Colors} {'RED': 1, 'GREEN': 2, 'BLUE': 3} """ RED = 1 GREEN = 2 BLUE = 3 MIDORI = 2 class Weekday(Enum): """ >>> Weekday.FIRST_DAY_OF_WEEK <Weekday.MONDAY: 1> >>> from datetime import datetime >>> day = datetime.strptime("2024-03-23", '%Y-%m-%d') >>> Weekday.from_date(day) <Weekday.SATURDAY: 6> """ MONDAY = 1 TUESDAY = 2 WEDNESDAY = 3 THURSDAY = 4 FRIDAY = 5 SATURDAY = 6 SUNDAY = 7 FIRST_DAY_OF_WEEK = 1 @classmethod def from_date(cls, date): return cls(date.isoweekday()) class Vehicles(Enum): """ >>> [member.value for member in Vehicles] [1, 2, 3] """ Car = auto() Airplane = auto() Bicycle = auto() class AutoName(Enum): @staticmethod def _generate_next_value_(name, start, count, last_values): return name class Ordinal(AutoName): """ >>> [member.value for member in Ordinal] # _generate_next_value_()でauto()で返す値をオーバーライド ['NORTH', 'SOUTH', 'EAST', 'WEST'] """ NORTH = auto() SOUTH = auto() EAST = auto() WEST = auto() if __name__ == "__main__": import doctest doctest.testmod()