2012-11-20 84 views
0

我對Python有一個奇怪的問題。出於某種原因,當我從命令行調用它時,我可以儘可能多地使用replace()函數,但是我不能在特定的類中使用它。該代碼產生以下(知名)錯誤:TypeError:'str'對象不可調用

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

「我非常確信海峽的意圖是可調用的。」號碼 – Marcin

回答

1

我這樣做:

if type(tree[i]) is str: 

,而不是這樣的:

if type(tree[i] is str): 

你把它寫的計算結果爲if type(false)的方式,這相當於if bool,這將永遠是truthy。

4

而不是

if type(tree[i] is str): 

不要你的意思做

if type(tree[i]) is str: 
+0

謝謝,這是做到了。它很奇怪它是如何報告下一行的錯誤的。 –