Son*_*ang 7 python type-hinting mypy python-typing
我是 Python 静态类型模块的新手mypy。我试图将整数和浮点数附加到一个数组中,我静态地将其输入为 Real。但mypy说它们是与 Real 不兼容的类型。我认为整数和浮点数是实数的子类型?
from typing import List
from numbers import Real
data : List[Real] = []
with open(path, 'r') as file:
for line in file:
line = line.strip()
if subject == 'time':
data.append(float(line))
else:
data.append(int(line))
Run Code Online (Sandbox Code Playgroud)
错误信息:
from typing import List
from numbers import Real
data : List[Real] = []
with open(path, 'r') as file:
for line in file:
line = line.strip()
if subject == 'time':
data.append(float(line))
else:
data.append(int(line))
Run Code Online (Sandbox Code Playgroud)
小智 1
正如AChampion所说,你可以使用float代替numbers.Real. Pep 0484(特别是这里)基本上说,在类型检查的上下文中,层次结构complex > float > int受到尊重,并且numbers.*不需要使用。
这是 mypy 的一个已知“问题”,已在此处提出和讨论。我还没有阅读整个讨论,但 tldr 似乎是 Pep 0484 足以使这个问题成为一个低优先级问题(并且它已经 5 年没有得到解决)。
我想说(正如问题讨论中提到的),如果mypy在错误消息中将此作为已知问题给出一些指示,那就太好了,而目前 ( mypy 0.991) 没有这样做。
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |