0

我对 Python 有一个奇怪的问题。出于某种原因,当我从命令行调用它时,我可以尽可能多地使用 replace() 函数,但我不能在特定类中使用它。该代码产生以下(众所周知的)错误:

    File "/homes/mmj11/malice/lexer.py", line 96, in replaceInTree
    tree[i] = tree[i].replace("  "," ")
    TypeError: 'str' object is not callable

我正在使用的功能如下:

   def replaceInTree(self, tree):
    for i in range(len(tree)):
      if type(tree[i] is str):
         tree[i] = tree[i].replace("  "," ")
         tree[i] = tree[i].replace(tree[i], self.getToken(tree[i]))
      else:
         tree[i] = self.replaceInTree(tree)
    return tree

我真的认为这不应该发生,因为我可以在命令行中做完全相同的事情。我非常确定 str 是可调用的。

4

2 回答 2

4

代替

 if type(tree[i] is str):

你不是故意的吗

 if type(tree[i]) is str:
于 2012-11-20T18:26:01.457 回答
1

我会这样做:

if type(tree[i]) is str:

而不是这个:

if type(tree[i] is str):

您编写它的方式评估为if type(false),相当于if bool,这将始终是真实的。

于 2012-11-20T18:26:01.463 回答