You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为聚合常量(数据类/枚举)实现函数参数类型提示

聚合常量并实现准确类型提示的两种方案

方案一:使用Enum(推荐)

Enum是Python官方用于管理相关常量的标准工具,类型检查工具(如mypy、PyCharm)对其支持完善,参数提示直观清晰,能严格限制输入范围。

from enum import Enum

class Consts(Enum):
    CONST_0 = 0
    CONST_1 = 1
    CONST_2 = 2
    CONST_3 = 3

def foo(param: Consts):
    # 若需要获取常量对应数值,访问.value属性即可
    return param.value

# 使用示例:IDE会直接列出所有Consts成员供选择
foo(Consts.CONST_0)
  • 调用函数时,IDE会明确提示可选的枚举成员名称,而非模糊的数值
  • 类型检查会拒绝传入非Consts成员的参数,保障类型安全

方案二:基于冻结数据类的实现

如果必须用冻结数据类聚合常量,可以通过自动生成Literal类型别名来实现准确提示,避免手动逐个枚举字段值:

from dataclasses import dataclass, fields
from typing import Literal

@dataclass(frozen=True)
class Consts:
    const_0: int = 0
    const_1: int = 1
    const_2: int = 2
    const_3: int = 3

# 自动提取所有字段值生成Literal类型
ConstsValues = Literal[tuple(getattr(Consts, field.name) for field in fields(Consts))]

def foo(param: ConstsValues):
    return param

# 使用示例:IDE会提示可选的常量数值
foo(Consts.const_0)
  • 当数据类新增常量时,ConstsValues会自动更新,无需手动修改类型提示
  • 局限性:提示内容是具体数值(如0、1),而非常量名称,直观性不如Enum方案

内容的提问来源于stack exchange,提问作者Mika

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:57:06