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

如何正确声明并注解接受Enum枚举值的类参数?

解决Enum类型注解不被允许的问题

你遇到的问题通常由以下几种原因导致,对应解决方案如下:

1. 缺少Enum类的导入

你的代码中使用了Enum但未从标准库导入,这会导致Type无法被识别为有效的类型注解。

修正后的代码需添加导入语句:

from enum import Enum
from typing import Optional

_Types = ['Null', 'Bool', 'Int', 'Float', 'Decimal']
Type = Enum('Type', {v:i for i,v in enumerate(_Types)})

class Literal:
    def __init__(self, _type: Type, _val: Optional[str] = None):
        self._type = _type

2. 命名冲突问题

你自定义的Literal类与typing模块中的Literal类型重名,会导致类型检查工具(如mypy)混淆两者的定义。

解决方法二选一:

  • 重命名自定义类:比如改为LiteralValue
  • 重命名导入的typing.Literal:
    from typing import Literal as TypingLiteral
    

3. 旧Python版本兼容性

如果使用Python 3.5及更早版本,Enum的类型注解支持不完善,建议升级到Python 3.6及以上版本(3.6+原生支持Enum作为类型注解)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:25:24