NumPy 1.24.3中无法通过numpy.typing访问类型的问题求助
问题原因与解决思路
原因
NumPy的typing是独立的子模块,默认导入numpy主模块时并不会自动加载这个子模块。numpy主模块的__init__.py没有将typing子模块注册为自身的属性,所以直接通过numpy.typing访问时会触发AttributeError。而from numpy.typing import ArrayLike这种写法会显式加载typing子模块,因此能正常工作。
解决方法
有三种可行的处理方式:
显式加载
numpy.typing子模块
在导入numpy后,额外导入numpy.typing,之后就能通过numpy.typing.ArrayLike访问类型:import numpy import numpy.typing def myfun(a: numpy.typing.ArrayLike): pass直接从子模块导入目标类型
这是你原本能正常运行的写法,也是最简洁的方式:from numpy.typing import ArrayLike def myfun(a: ArrayLike): pass给子模块起别名
如果需要频繁使用numpy.typing下的多个类型,可以给子模块起短别名,提升代码可读性:import numpy.typing as npt def myfun(a: npt.ArrayLike): pass
内容的提问来源于stack exchange,提问作者gegorg
相关产品推荐
相关产品推荐

