Python/enum: Difference between revisions
< Python
(Created page with "== enum — Support for enumerations == Python 3: enum — Support for enumerations https://docs.python.org/3/library/enum.html <pre> from enum import Enum # class syntax class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 # functional syntax Color = Enum('Color', ['RED', 'GREEN', 'BLUE']) </pre> Convert string name or value to enum: <pre> def value_to_enum(color_value_str): try: return Color(color_value_str) except ValueError: retu...") |
(No difference)
|
Revision as of 19:58, 16 September 2025
enum — Support for enumerations
Python 3: enum — Support for enumerations https://docs.python.org/3/library/enum.html
from enum import Enum # class syntax class Color(Enum): RED = 1 GREEN = 2 BLUE = 3 # functional syntax Color = Enum('Color', ['RED', 'GREEN', 'BLUE'])
Convert string name or value to enum:
def value_to_enum(color_value_str): try: return Color(color_value_str) except ValueError: return None def name_to_enum(color_name_str): try: return return Color[color_name_str] except ValueError: return None
---
Python 2: [1]
class Enum(set): """ Basic enumerated type Example >>> Animals = phi.Enum(["DOG", "CAT", "HORSE"]) >>> Animals.DOG 'DOG' >>> 'HORSE' in Animals True """ def __getattr__(self, name): if name in self: return name raise AttributeError("Missing Enum property: %s" % name) def __setattr__(self, name, value): # this makes it read-only raise AttributeError("Unable to modify Enum property: %s (%s)" % (name, value)) Animals = Enum(["DOG", "CAT", "HORSE"]) print(Animals.DOG) # 'DOG'
Alternative:
class Stationery: Pen, Pencil, Eraser = range(0, 3)
One liner:
class Enum(tuple): __getattr__ = tuple.index
>>> State = Enum(['Unclaimed', 'Claimed']) >>> State.Claimed 1 >>> State[1] 'Claimed' >>> State ('Unclaimed', 'Claimed') >>> range(len(State)) [0, 1] >>> [(k, State[k]) for k in range(len(State))] [(0, 'Unclaimed'), (1, 'Claimed')] >>> [(k, getattr(State, k)) for k in State] [('Unclaimed', 0), ('Claimed', 1)]
Python 3 supports enum natively with the enum.Enum library: