「TypeError: 'list' object is not callable」エラーについて
assign example = list('easyhoss') とすると、「TypeError: 'list' object is not callable」という謎のエラーが発生する可能性があります。この不可解な問題は、組み込みリスト クラスのインスタンスによる予期せぬ置換に起因します。
クラスとインスタンスの接続の探索
変数の宣言による exampleそれに list('easyhoss') の結果を代入すると、文字 'e'、'a'、 「s」、「y」、「h」、「o」、「s」、「s」。ただし、コードの前半で list = list('abc') を使用したときに list がそれ自体のインスタンスに再割り当てされたため、エラーが発生します。
スコープと名前空間の移動
Python は名前空間を利用して、クラスや関数を含むオブジェクト名を管理します。変数にアクセスしようとすると、インタプリタはローカルの名前空間を検索し、変数が見つかるか NameError が発生するまで階層を徐々に上っていきます。組み込み関数とクラスは、高レベルの名前空間 __builtins__ に存在します。
名前空間シャドウイングの結果
モジュールの名前空間で list という名前の変数を定義すると、次のようになります。基本的には組み込みリスト クラスをシャドウイングしました。その結果、list を再定義した後に list('easyhoss') を呼び出そうとすると、インタプリタは、意図したクラスではなくインスタンスを呼び出すものとして解釈します。これは、ローカルに定義されたリスト変数が優先されるためです。
名前空間のシャドウイングの回避
このような名前空間の競合を防ぐには、ビルドされた変数と競合する変数名の使用を避けることをお勧めします。 -in 識別子。 CPython の組み込み関数とクラスは、__builtin__ モジュールのドキュメントにリストされています。あるいは、Python プラグインを使用して、PyCharm や Atom などの統合開発環境 (IDE) の機能を活用することもできます。これらのプラグインでは、エラー回避に役立つ名前空間のシャドウイングが強調表示されることがよくあります。
呼び出し可能オブジェクトとインスタンスについて
組み込みリストは、新しいリスト インスタンスを作成するために呼び出すことができるクラスです。逆に、インスタンス自体を呼び出すことができない場合もあります。したがって、インスタンス リストで list('easyhoss') を呼び出そうとすると (リストを再定義した後に発生することになります)、クラスのインスタンスは呼び出し可能ではないため、このエラーが発生します。
以上がPython が「TypeError: 'list' object is not callable」エラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。