Python类中的类型检查
我试图使用静态类型检查工具来检查变量的错误赋值。例如,将字符串赋给int变量 我尝试了pytype和mypy。两人都没有给我任何警告Python类中的类型检查,python,python-3.x,typechecking,mypy,pytype,Python,Python 3.x,Typechecking,Mypy,Pytype,我试图使用静态类型检查工具来检查变量的错误赋值。例如,将字符串赋给int变量 我尝试了pytype和mypy。两人都没有给我任何警告 A类: 定义初始化(自): self.x:int=None 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': a=a() a、 x='abc' 打印(a.x) 我希望静态类型检查工具可以在上面一行给我一个警告: a.x='abc' 我是否需要使用一些选项或其他帮助工具来检测此类赋值语句?因此,当我复制您的代码并使用mypy
A类:
定义初始化(自):
self.x:int=None
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
a=a()
a、 x='abc'
打印(a.x)
我希望静态类型检查工具可以在上面一行给我一个警告:
a.x='abc'
我是否需要使用一些选项或其他帮助工具来检测此类赋值语句?因此,当我复制您的代码并使用mypy进行检查时,我会得到以下结果:
project\scratch.py:7:错误:赋值中的类型不兼容(表达式的类型为“str”,变量的类型为“int”)
我是通过执行mypypath/to/file.py
找到这个的
在Visual Studio代码内部,选择mypy作为过梁在a
变量下面加下划线,并覆盖mypy错误
因此,我得到了正确显示的警告错误代码;也许你的IDE没有设置来处理它们
注意:执行python path/to/file.py
不会显示mypy错误,很可能会使键入保持“软”状态,这样代码仍会执行,键入更像是“提示”,而不是停止代码:
您始终可以使用Python解释器来运行静态类型的
程序,即使它们有类型错误:
$python3程序
.我不能代表其他IDE,但要代表Visual Studio代码(使用Python 3.8.5)
“python.languageServer”:“Pylance”,
“python.analysis.typeCheckingMode”:“严格”
(变量)x:None
无法为类型“A”分配成员“x”
“无”类型的表达式不能分配给类“A”的成员“x”
类型“None”不能分配给类型“int”Pylance(reportGeneralTypeIssues)[3,14]
(变量)x:Literal['abc']
无法为类型“A”分配成员“x”
无法将“Literal['abc']”类型的表达式分配给类“A”的成员“x”
“Literal['abc']”与“int”Pylance不兼容(reportGeneralTypeIssues)[7,7]
你好。您正在使用哪个IDE环境?