Python3.4中增加了Enum枚举类的功能。使用枚举类时需要先导入enum模块中的Enum。

  1. from enum import Enum
  2. class VIP(Enum):
  3. YELLOW = 1
  4. GREEN = 2
  5. BLACK = 3
  6. RED = 4
  7. print(VIP.RE
  1. 枚举类内置了**__members__**属性,该属性是一个包含枚举类中所有成员的字典,通过遍历该属性,可以访问各个成员
  2. 枚举类中各个成员名称必须不同,值可以相同,但是当值相同的时候,python会认为是同一个成员,只是含有别名而言。需要避免出现这种情况的话,需要借助**@unique**类装饰器(也是需要导包)。
    1. from enum import Enum
    2. class VIP(Enum):
    3. YELLOW = 1
    4. GREEN = 1
    5. BLACK = 3
    6. RED = 4
    7. print(VIP['GREEN']) # 输出VIP.YELLOW
    1. from enum import Enum, unique
    2. @unique
    3. class VIP(Enum):
    4. YELLOW = 1
    5. GREEN = 1
    6. BLACK = 3
    7. RED = 4
    8. print(VIP['GREEN']) #此时会报错
    枚举类特点:
  • 枚举类的各个成员名称不能相同
  • 定义枚举类后,不能进行修改值。
  • 枚举类不能实例化对象。

    1. 枚举操作

    1.1 遍历

    ```python from enum import Enum class VIP(Enum): YELLOW = 1 GREEN = 2 BLACK = 3 RED = 4

for name,member in VIP.members.items(): print(name, ‘—>’,member)

  1. <a name="NYHSA"></a>
  2. ### 1.2 枚举类型、枚举的名称,枚举的值
  3. ```python
  4. from enum import Enum, unique
  5. # @unique
  6. class VIP(Enum):
  7. YELLOW = 1
  8. GREEN = 2
  9. BLACK = 3
  10. RED = 4
  11. print(VIP.GREEN)
  12. print(VIP.GREEN.name)
  13. print(VIP.GREEN.value)
  14. VIP.GREEN
  15. GREEN
  16. 2

1.3 枚举运算

枚举类型可以进行等值比较,身份比较,不能进行大小比较。

1.4 枚举转换

  1. 在数据库中存储的是int类型,但是后端取到数据后需要进行转换为枚举类型。
  2. from enum import Enum, unique
  3. # @unique
  4. class VIP(Enum):
  5. YELLOW = 1
  6. GREEN = 2
  7. BLACK = 3
  8. RED = 4
  9. a = 1
  10. print(VIP(a)) # VIP()并不是和int()类似的类型转换