我对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是可以调用的。
答案 0 :(得分:4)
而不是
if type(tree[i] is str):
不是你的意思
if type(tree[i]) is str:
答案 1 :(得分:1)
我会这样做:
if type(tree[i]) is str:
而不是:
if type(tree[i] is str):
您编写的方式评估为if type(false)
,相当于if bool
,这将始终是真实的。