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

Python 3.9中使用str | None类型注解报错的解决咨询

解决Python 3.9中dataclass联合类型注解报错的方案

问题原因

Python 3.9不支持str | None这种竖线语法的联合类型标注,该语法是Python 3.10才正式引入的,所以会触发TypeError。另外你用or替代也是无效的,类型注解里不能用逻辑运算符or,必须用专门的类型工具。

可行解决方法

方法1:使用typing.Optional

Optional[str]是Union[str, None]的简写,专门用来表示“可以是某类型或者None”的场景,代码修改如下:

from dataclasses import dataclass
from typing import Optional

@dataclass
class InventoryItem:
    """Class for keeping track of an item in inventory."""
    name: Optional[str] = None
    unit_price: float
    quantity_on_hand: int = 0

方法2:使用typing.Union

直接用Union明确声明联合类型,效果和Optional完全一致:

from dataclasses import dataclass
from typing import Union

@dataclass
class InventoryItem:
    """Class for keeping track of an item in inventory."""
    name: Union[str, None] = None
    unit_price: float
    quantity_on_hand: int = 0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:14:49