为什么python linter不检测不存在的方法名?

为什么python linter不检测不存在的方法名?,python,linter,Python,Linter,我使用的是VS代码,如果我试图调用一个不存在的对象上的方法,linter不会检测到。 这意味着在运行代码之前我不会意识到这个问题。Linters似乎检查是否存在常规函数,但出于某种原因,它不检查对象方法 这看起来像是简单的错误检查,但由于某些原因它并不存在。如何使linters标记此错误?使用类型批注和静态类型检查器。如果没有类型注释,linter就不知道要处理的对象是什么类型的。也许这个变量实际上包含了实现该方法的其他类的实例?门楣匠不能肯定mypy是正确的答案这就是“duck-typing”

我使用的是VS代码,如果我试图调用一个不存在的对象上的方法,linter不会检测到。 这意味着在运行代码之前我不会意识到这个问题。Linters似乎检查是否存在常规函数,但出于某种原因,它不检查对象方法


这看起来像是简单的错误检查,但由于某些原因它并不存在。如何使linters标记此错误?

使用类型批注和静态类型检查器。如果没有类型注释,linter就不知道要处理的对象是什么类型的。也许这个变量实际上包含了实现该方法的其他类的实例?门楣匠不能肯定
mypy
是正确的答案这就是“duck-typing”的问题所在。由于当您尝试使引用
.quack()
时,linter无法知道引用中实际包含的对象,因此它无法判断该引用是否始终包含duck。-IDE尝试这样做是为了在语法方面帮助您,但他们经常出错,因为这是一个非常困难的问题。与此形成鲜明对比的是,对于JavaLinter/IDE/等来说,由于强类型,这是一件非常容易的事情。所有这些都是Python中添加类型的原因。它们不会改变代码的实际操作。它们的存在就是为了这类东西。
mypy
类型注释
就是答案。谢谢大家!