我尝试使用numpy.typing模块中的ArrayLike类型进行静态类型。我使用的是NumPy版本1.24.3。
当我直接从numpy.typing导入ArrayLike时,一切都按预期工作:
from numpy.typing import ArrayLike
def myfun(a: ArrayLike):
pass
但是,如果我尝试将numpy作为np导入,然后使用np.typing.ArrayLike,我会得到一个AttributeError。
有:
import numpy
def myfun(a: numpy.typing.ArrayLike):
pass
我得到的错误是:
ERROR!
Traceback (most recent call last):
File "<string>", line 4, in <module>
File "/usr/local/lib/python3.11/site-packages/numpy/__init__.py", line 320, in __getattr__
raise AttributeError("module {!r} has no attribute "
AttributeError: module 'numpy' has no attribute 'typing'
我不知道为什么我得到这个错误。我在我的本地机器上和在线Python解释器上都试过了,结果都是一样的。
任何见解将不胜感激。
1条答案
按热度按时间zazmityj1#
在像numpy这样的单个包中,有像typing这样的子包。文件结构类似于:
通过使用:
你正在从包'numpy'导入子包'typing',并使用属性ArrayLike。然而,这:
只导入numpy包。第二行将“typing”视为numpy导出的值。但是,“键入”是一个子包。因此,它导致错误。