title: 简单使用一下 Python enumdescription: 呃,这个 enum…
redirect: 2020-11-02-python-enum
description: 呃,这个 enum…
Why
先看一下日常代码中用常量处理逻辑的代码写法
# Example 1if index == 10:dosomething()# Example 2MAX_INDEX = 10if index = MAX_INDEX:dosomething()# Examplefrom enum import IntEnumclass Index(IntEnum):MAX = 10MIN = 0if index = Index.MAX:dosomething()
如果你对你的 code 有一定的要求, 有时候你会用枚举类来替代一些数字字面量
Python Enum
enum 是 Python 自 3.4 版本引入的内置模块
创建一个 Enum
from enum import Enumclass Color(Enum):RED = 1GREEN = 2BLUE = 3
使用
>>> Color.RED<Color.RED>>>> Color.RED.nameColor>>> Color.RED.value1
确保唯一的枚举值
使用装饰器 enum.uniqu
from enum import Enum, unique@uniqueclass Mistake(Enum):ONE = 1TWO = 2THREE = 3FOUR = 3
使用自动设置的值
from enum import Enum, autoclass Color(Enum):RED = auto()BLUE = auto()GREEN = auto()list(Color)
使用 _generate_next_value_() 重载 auto() 赋值
class AutoName(Enum):def _generate_next_value_(name, start, count, last_values):return nameclass Ordinal(AutoName):NORTH = auto()SOUTH = auto()EAST = auto()WEST = auto()list(Ordinal)
