KeyError
の文字列表現でエラー メッセージに余分な引用符が追加されるのはなぜですか? 他のすべての組み込み例外は、エラー メッセージ文字列を直接返すだけです。
たとえば、次のコード:
print str(LookupError("foo"))
print str(KeyError("foo"))
次の出力が生成されます。
foo
'foo'
他の組み込み例外 ( IndexError
、RuntimeError
、Exception
など) のサンプルでこれを試してみましたが、それらはすべて引用符なしで例外メッセージを返します。
help(KeyError)
は、基本クラスで定義されたものを使用する とは対照的に、__str__(...)
で定義されていると言います。これは、動作がどのように異なるかを説明していますが、でオーバーライドされる理由は説明していません。組み込み例外に関する Python のドキュメントでは、この不一致について何の説明もありません。KeyError
LookupError
BaseException
__str__(...)
KeyError
Python 2.6.6 に対してテスト済み