0Pricing
Python Academy · 课时

枚举类

定义具名常量组

枚举类 是 CoddyKit 上的免费 Python Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Python Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Python Academy 课程共包含 4 节课。

为什么使用枚举?

枚举是一组彼此相关的具名常量值。您无需在代码中到处散落难以理解的字符串或数字,而是为每个值赋予清晰的名称。

  • 代码能够自我说明。
  • 可以防止拼写错误。
  • 提供固定且明确的一组选项。

定义枚举

继承 Enum,并以 NAME = value 的形式列出成员。按照惯例,成员名称使用大写字母。

from enum import Enum

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

print(Color.RED)

名称和值

每个枚举成员都有一个 .name(标识符)和一个 .value(分配的值)。

from enum import Enum

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

c = Color.GREEN
print(c.name)
print(c.value)

成员是单例

每个成员都是唯一的单例对象。使用 is 或 == 比较成员;同一个成员始终是完全相同的对象。

from enum import Enum

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

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

按值查找

使用一个值调用枚举类,即可获取匹配的成员。未知值会引发 ValueError。

from enum import Enum

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

print(Color(2))
try:
    Color(99)
except ValueError as e:
    print('Bad value:', e)

按名称查找

使用成员名称字符串进行方括号访问,即可按名称查找成员。从配置或用户输入中读取名称时,这种方式非常方便。

from enum import Enum

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

print(Color['GREEN'])

遍历成员

枚举是可迭代的。循环会按照定义顺序生成每个成员,非常适合构建菜单或验证选项。

from enum import Enum

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

for c in Color:
    print(c.name, c.value)

字符串值

枚举值并不局限于整数。字符串很常见,尤其适用于需要序列化或存储的值。

from enum import Enum

class Status(Enum):
    ACTIVE = 'active'
    PAUSED = 'paused'
    CLOSED = 'closed'

print(Status.PAUSED.value)
print(Status('closed'))

使用 auto() 生成值

如果实际数字并不重要,请使用 auto() 自动分配值,从 1 开始递增。

from enum import Enum, auto

class Direction(Enum):
    NORTH = auto()
    SOUTH = auto()
    EAST = auto()
    WEST = auto()

for d in Direction:
    print(d.name, d.value)

函数中的枚举

使用枚举作为函数参数可以明确表达意图,并防止无效输入。在逻辑中直接比较成员。

from enum import Enum

class Light(Enum):
    RED = 1
    YELLOW = 2
    GREEN = 3

def can_go(light):
    return light is Light.GREEN

print(can_go(Light.GREEN))
print(can_go(Light.RED))

字典中的成员

枚举成员可哈希,因此可以作为字典键。这是将数据关联到每个具名常量的一种简洁方式。

from enum import Enum

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

hex_codes = {Color.RED: '#ff0000', Color.GREEN: '#00ff00'}
print(hex_codes[Color.RED])

快速检查

如何正确比较两个枚举成员是否为同一对象?

回顾

您学会了使用 Enum 定义具名常量组。

  • 成员具有 .name 和 .value。
  • 使用 Color(v) 按值查找,使用 Color['NAME'] 按名称查找。
  • 枚举是可迭代的,成员是单例。
  • 当具体值并不重要时,使用 auto()。

常见问题解答

「枚举类」课时是免费的吗?

是的 — 「枚举类」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Python Academy 课程的其余内容,请升级到 CoddyKit PRO。 Python Academy 课程共包含 4 节课。

「枚举类」这节课中我会学到什么?

定义具名常量组 你通过在浏览器中直接运行的动手代码来练习 Python Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Python Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Python Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「枚举类」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Python Academy 课中编写并运行代码吗?

能。每节 Python Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 枚举类
  2. IntEnum 与 Flag
  3. NamedTuple 基础
  4. typing.NamedTuple
← 返回 Python Academy