使用mypy静态检查我的一些代码,然后出现此问题。代码示例:
import csv
d: csv.Dialect = csv.excel
d = csv.Sniffer().sniff("a")
但是mypy在第一次分配给d
时给出了此错误:
error: Incompatible types in assignment (expression has type "Type[excel]", variable has type "Dialect")
因此,自然的解决方法是更改变量的类型。
from typing import Type
import csv
d: Type[csv.Dialect] = csv.excel
d = csv.Sniffer().sniff("a")
但是现在我在第二次分配给d时遇到此错误:
error: Incompatible types in assignment (expression has type "Dialect", variable has type "Type[Dialect]")
但这很奇怪,因为csv.excel
是sniff
函数的有效返回值,因此请确保它们必须具有相同的类型。
Python 3.7.3,mypy 0.701
答案 0 :(得分:0)
我认为这是typeshed
中的错误:我提出了issue
根据typeshed
,Sniffer.sniff
返回类型为csv.Dialect
的值,而实际上返回类型为Type[csv.Dialect]
的值