Python代码检查器,用于将函数作为属性进行比较

2024-10-02 10:19:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我偶尔会花相当多的时间去追踪我代码中的脑屁。。。虽然我通常反对派林特,但有些事情却从派林那里溜走了。我最容易忽视的问题是。。。在

# normally, variable is populated from parsed text, so it's not predictable
variable = 'fOoBaR'
if variable.lower == 'foobar':
    #       ^^^^^<------------------ should be .lower()
    do_something()

皮林和Python都不喜欢这样。。。有没有python代码检查工具可以标记这个特定的问题?在


Tags: 代码textfromis时间parsed事情variable
3条回答

@Mike Pennington我想先说我也经常遇到这种情况-。-

@eyquem'lower()'是一个函数lower'是一个函数指针(如果我没弄错的话)。Python将允许您尝试运行此代码,但它不会调用函数。在

我认为这很难理解的原因是你并不总是知道你调用方法的变量的类型。例如,假设我有两个班。在

class Foo()
   def func(self):
      #do stuff
      pass

class Bar()
   self.func = "stuff"

如果您的代码中有一个函数,该函数接受如下参数“baz”:

^{pr2}$

根据baz的类型,其中任何一个都可能有效。 不过,根本无法知道baz是“Foo”还是“Bar”类型。在

编辑:我是说静态分析。。。在

你如何建议一个代码检查器来验证这一点?这是完全合法的语法。与其检查这种错误,不如养成使用更好模式的习惯。在

而不是:

variable = 'fOoBaR'
if variable.lower == 'foobar':
    #       ^^^^^<          should be .lower()
    do_something()

这样做:

^{pr2}$

通过这种方式,您总是显式地对要比较的值调用.lower(),而不是依赖于一个就地方法调用和比较,这将导致您所遇到的陷阱。在

相关问题 更多 >

    热门问题