Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python类中的类型检查_Python_Python 3.x_Typechecking_Mypy_Pytype - Fatal编程技术网

Python类中的类型检查

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

我试图使用静态类型检查工具来检查变量的错误赋值。例如,将字符串赋给int变量

我尝试了pytypemypy。两人都没有给我任何警告

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)

  • 安装pylance(Microsoft的Python语言服务器扩展)

  • 将以下两行添加到settings.json:

    “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环境?