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 に答える