命名元组与枚举
掌握 namedtuple 可读元组、Enum 枚举类、数据类对比
命名元组与枚举
tuple 用下标访问可读性差,namedtuple 给它加名字;枚举让一组常量有意义。
学完本章你将: 掌握 namedtuple、Enum、与 dataclass 的对比选择。
namedtuple —— 有名字的元组
python
from collections import namedtuple
# 定义
Point = namedtuple("Point", ["x", "y"])
p = Point(10, 20)
print(p.x, p.y) # 10 20
print(p[0], p[1]) # 10 20(也兼容下标)
print(p) # Point(x=10, y=20)
# 不可变——和元组一样
# p.x = 30 # AttributeError
Enum 枚举
python
from enum import Enum, auto
class Color(Enum):
RED = 1
GREEN = 2
BLUE = 3
class Status(Enum):
OK = auto() # 自动编号
ERROR = auto()
PENDING = auto()
print(Color.RED) # Color.RED
print(Color.RED.value) # 1
print(Color.RED.name) # 'RED'
# 比较
if status == Status.OK:
print("成功")
namedtuple vs dataclass vs dict
python
# namedtuple:不可变、内存小、兼容元组
# dataclass:可变(默认)、支持方法、类型注解
# dict:灵活但无结构约束
# 选型:
# 简单数据载体 → namedtuple
# 带行为的数据类 → dataclass
# 临时数据 → dict