为什么KeyError错误消息的字符串表示形式要多加引号?所有其他内置异常只是直接返回错误消息字符串。
例如,下面的代码:
print str(LookupError("foo"))
print str(KeyError("foo"))
产生以下输出:
foo
'foo'
我已经尝试过使用其他内置异常(IndexError、RuntimeError、Exception等)的样本,它们都返回不带引号的异常消息。
help(KeyError)表示__str__(...)是在 中定义的KeyError,而不是在基类LookupError中定义的。BaseException这解释了行为有何不同,但没有解释为什么 __str__(...)在KeyError. 关于内置异常的 Python 文档没有说明这种差异。
针对 Python 2.6.6 测试