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

如何在Python dataclass中定义支持多种类型元素的List?

Python数据类多类型列表字段实现方案

你需要用到Python的联合类型注解实现该需求,根据你使用的Python版本不同,有两种常用写法:

Python 3.10 及以上版本

可以直接用|运算符声明联合类型,同时Python 3.9+支持直接用内置的list代替typing.List做类型注解:

from dataclasses import dataclass

@dataclass
class User(Mixin):
    id: int = None
    # 同时支持列表元素为三类对象,且默认值为None
    items: list[DefaultItem | SomeSpecificItem | SomeOtherItem] | None = None

Python 3.9 及更早版本

需要从typing模块导入Union和Optional实现:

from dataclasses import dataclass
from typing import List, Union, Optional

@dataclass
class User(Mixin):
    id: int = None
    items: Optional[List[Union[DefaultItem, SomeSpecificItem, SomeOtherItem]]] = None

补充说明

  • 上述写法均为静态类型注解,仅用于IDE提示、mypy等类型检查工具校验,Python原生运行时不会强制校验字段类型
  • 如果你需要运行时自动校验传入的元素类型,可以将标准库的dataclass替换为pydantic.dataclasses.dataclass,引入后会自动对items字段的元素类型做合法性校验

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 16:24:07