【发布时间】:2014-09-19 20:39:05
【问题描述】:
为什么KeyError 的字符串表示会在错误消息中添加额外的引号?所有其他内置异常只是直接返回错误消息字符串。
例如下面的代码:
print str(LookupError("foo"))
print str(KeyError("foo"))
产生以下输出:
foo
'foo'
我已经尝试过使用其他内置异常(IndexError、RuntimeError、Exception 等)的样本,它们都返回不带引号的异常消息。
help(KeyError) 表示__str__(...) 是在KeyError 中定义的,而LookupError 则使用BaseException 基类中定义的LookupError。这解释了行为有何不同,但没有解释为什么 __str__(...) 在KeyError 中被覆盖。 built-in exceptions 上的 Python 文档没有说明这种差异。
针对 Python 2.6.6 测试
【问题讨论】: