微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。