Pymotw - enum

查看原文

Python 库 enum 引入于 3.4,出自 PEP435, 使用它可以让我们简化很多按组归类的常量。

  • 继承 enum.Enum 逐个定义名字 + 值。
  • 可通过循环获得所有值。
  • 当值有重复,可认为后续定义的名字是第一个定义的名字的 alias
  • 可用 @enum.unique 确保定义中不会有重复值(有重复则报异常)
  • 值比较默认支持 is, == 比较。大小比较的话可通过继承 enum.IntEnum 类。
  • 可通过 enum.Enum(value='MyValinnaEnum', names='a b c') 这种方法自动生成值从 1 开始的常量。
  • names 也支持其它值,例如 tuple。