Mypy 在 if else 中定义类型时引发“无法分配多种类型”

问题描述

在我们的测试中,我们测试了 numpy 的多个版本。旧版本没有我们想要在打字中定义的某些类 (np.random.Generator),所以我选择根据检查 numpy 版本来定义类型:

# random generator
if np_version_under1p17:
    RandomState = Union[int,ArrayLike,np.random.RandomState]
else:
    RandomState = Union[int,np.random.Generator,np.random.RandomState]

但这会导致:

Cannot assign multiple types to name "RandomState" without an explicit "Type[...]" annotation 

删除 if .. else解决错误

RandomState = Union[int,np.random.RandomState]

但是我们使用旧 numpy 版本的测试将失败。

定义 RandomState 的最佳方式是什么,但以这样一种方式定义它,以便它在我们的测试中适用于较新和较旧的 numpy 版本。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)