2017-01-12 13 views
3

linux2でPython 2.7.12(デフォルト、11月19日、06:48:10) [GCC 5.4.0 20160609]を使用しました。対応するエラーが.Iはこのことについて多くのことを探索したが、なぜ見つけることができません示され、それにfolllowingコードを実行すると、それはとても新鮮なインタプリタでTypeError:dict()を使用しているときに 'dict'オブジェクトが呼び出せない

>>> bob=dict(name='bob smith',age=42,pay='10000',job='dev') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'dict' object is not callable 
+7

変数「dict」の名前はどこですか? – mgilson

答えて

11

です:

>>> bob=dict(name='bob smith',age=42,pay='10000',job='dev') 
>>> bob 
{'age': 42, 'pay': '10000', 'job': 'dev', 'name': 'bob smith'} 

しかし、あなたがしています取得する:TypeError

TypeError: 'dict' object is not callable

このエラーは、dictが呼び出し可能であることを示しています。

私は新鮮な通訳を開いたときにdictが呼び出し可能であるので、それはあなたのdictが異なることを意味しています。

ほとんどの場合、dict変数が定義されており、組み込みのdictをオーバーロードしています。

dict = {...} 

行を探し、変数の名前を変更します。

@Robᵩで指摘されているように、変数には組み込みの名前を使用しないでください。特に誘惑を避けてくださいstrlist、など。

+2

はい変数名dictに問題がありました。以前に定義したdictを削除してから、コードを再利用すると、コードは完全に正常に動作します。 – Somebody

5

この対話セッションの前の行では、dictという名前を変数にリバウンドさせています。おそらく、dict={1:2}dict=dict(one=1, two=2)のような行があります。ここで

は、1つのそのようなセッションです:一般的なルールとして

>>> dict=dict(one=1) 
>>> bob=dict(name='bob smith',age=42,pay='10000',job='dev') 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: 'dict' object is not callable 
>>> 

、一つはこのエラーを回避するために、変数名としてビルトイン型の名前を使用しないでください。

+0

dictオブジェクトの削除と再定義が機能します! – Somebody

1

編集:これを無視して、これは悪い習慣であると言われています。

mgilsonが述べたように、問題にはdictという変数がある可能性があります。これに対する解決策は実行されるでしょう

del dict 

その名前で変数を削除します。

+0

'del'は一般的には、特に組み込みの名前では悪い考えです。 –

+0

@Rightleg、それを指摘してくれてありがとう。私が間違っているという免責事項を追加しました。 –

関連する問題