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

Python数据类中用|替代Union类型提示时出现错误

问题分析与解决方法

你遇到的错误和数据类无关,核心问题是误用了numpy的函数作为类型提示:

  • np.array是numpy中创建数组的内置函数,并不是表示数组实例的类型对象。
  • 当你用|语法时,Python会尝试对np.array(函数)和list[tuple](类型别名)执行|运算,这两种类型不支持该操作,所以抛出TypeError。
  • 之前用Union的写法其实也不规范,只是因为Union在运行时不会严格校验类型对象的合法性,所以没触发报错,但本质上是错误的类型提示。

正确写法

numpy数组的标准类型提示是np.ndarray(数组实例的实际类型),替换后代码即可正常运行:

from dataclasses import dataclass

import numpy as np


@dataclass
class Test:
    data: np.ndarray | list[tuple]


if __name__ == "__main__":
    test = Test(data=np.array([2, 1]))
    test2 = Test(data=[(1, 2), (1, 2)])

如果用回Union语法,正确的写法也应该是:

from dataclasses import dataclass
from typing import Union

import numpy as np


@dataclass
class Test:
    data: Union[np.ndarray, list[tuple]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:37:37