Z
ZHANK
编程在线教程Python 教程命名元组与枚举
数据结构

命名元组与枚举

掌握 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