在 Python 中,枚举(Enum)是一种特殊的类,用于定义一组命名的常量。枚举类可以提高代码的可读性和可维护性,特别是在需要一组固定常量的情况下。Python 提供了 enum
模块来支持枚举类。
定义枚举类
要定义一个枚举类,可以使用 enum
模块中的 Enum
基类。以下是一个简单的示例:
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
# 访问枚举成员
print(Color.RED) # 输出: Color.RED
print(Color.GREEN) # 输出: Color.GREEN
print(Color.BLUE) # 输出: Color.BLUE
# 访问枚举成员的名称和值
print(Color.RED.name) # 输出: RED
print(Color.RED.value) # 输出: 1
# 枚举成员的比较
print(Color.RED == Color.RED) # 输出: True
print(Color.RED == Color.GREEN) # 输出: False
# 枚举成员的遍历
for color in Color:
print(color)
# 输出:
# Color.RED
# Color.GREEN
# Color.BLUE
枚举类的其他用法
自动赋值
可以使用 auto()
函数自动为枚举成员赋值:
from enum import Enum, auto
class Color(Enum):
RED = auto()
GREEN = auto()
BLUE = auto()
# 访问枚举成员的值
print(Color.RED.value) # 输出: 1
print(Color.GREEN.value) # 输出: 2
print(Color.BLUE.value) # 输出: 3
枚举成员的别名
可以为枚举成员定义别名:
from enum import Enum
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
CYAN = 3 # CYAN 是 BLUE 的别名
# 访问枚举成员
print(Color.BLUE) # 输出: Color.BLUE
print(Color.CYAN) # 输出: Color.BLUE
# 枚举成员的比较
print(Color.BLUE == Color.CYAN) # 输出: True
枚举类的继承
枚举类不能被继承,但可以通过组合来扩展枚举类:
from enum import Enum
class PrimaryColor(Enum):
RED = 1
GREEN = 2
BLUE = 3
class ExtendedColor(Enum):
CYAN = 4
MAGENTA = 5
YELLOW = 6
# 访问枚举成员
print(PrimaryColor.RED) # 输出: PrimaryColor.RED
print(ExtendedColor.CYAN) # 输出: ExtendedColor.CYAN