📜  如何在python中使用枚举(1)

📅  最后修改于: 2023-12-03 15:08:56.674000             🧑  作者: Mango

如何在Python中使用枚举

枚举(Enum)是一种将常量值赋予有意义的名字的类型,它可以让代码更加清晰、更易读。Python3 中引入了 enum 模块,可以更好地支持枚举。

枚举的定义
简单定义
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3
条件定义

可以使用条件语句来定义枚举。

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3
    if sometest():
        YELLOW = 4
    else:
        PINK = 5
别名定义
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3
    ALIAS = 3
base classes 定义
from enum import IntEnum

class Color(IntEnum):
    RED = 1
    GREEN = 2
    BLUE = 3
调用枚举
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED)
print(repr(Color.RED))
print(str(Color.RED))
print(type(Color.RED))

输出:

Color.RED
<Color.RED: 1>
Color.RED
<enum 'Color'>
枚举成员的属性
value 属性
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED.value)

输出:

1
name 属性
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED.name)

输出:

RED
自定义属性
from enum import Enum

class Color(Enum):
    RED = {'value': 1, 'desc': 'red color'}
    GREEN = {'value': 2, 'desc': 'green color'}
    BLUE = {'value': 3, 'desc': 'blue color'}

print(Color.RED.value)
print(Color.RED.desc)

输出:

{'value': 1, 'desc': 'red color'}
red color
枚举的比较

可以使用 is 运算符和 == 运算符进行比较。

from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

print(Color.RED is Color.RED)
print(Color.RED == Color(1))

输出:

True
True
遍历枚举
from enum import Enum

class Color(Enum):
    RED = 1
    GREEN = 2
    BLUE = 3

for color in Color:
    print(color.name)

输出:

RED
GREEN
BLUE
总结

枚举可以起到标记作用,提高代码可读性和可维护性,Python 3 中可以使用 enum 模块更好地支持枚举。