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
相关产品推荐
相关产品推荐

