python - 异常派生类的 __repr__ 效果不佳
问题描述
我尝试对__repr__
从异常继承的对象使用方法。
但什么也没打印!
谁能帮忙解释一下为什么?
class MyException(Exception):
def __repr__(self):
return "MyException Object"
try:
raise MyException()
except MyException as e:
print(e) # shows nothing!
解决方案
因为MyException
is inheriting Exception.__str__
,这是首先由print
( 因为隐式调用是 to str(e)
,它只在内部回退到__repr__
if__str__
不存在。
奇怪的是,Exception.__str__
返回一个空白字符串:
>>> str(Exception())
''
我想玩弄它,它返回Excpetion
作为参数传递的任何内容
>>> str(Exception(1))
'1'
>>> str(Exception(None))
'None'
>>> str(Exception(None, True))
'(None, True)'
__str__
所以改为覆盖。或者更好的是,除了:
class MyException(Exception):
def __repr__(self):
return "MyException Object"
__str__ = __repr__
推荐阅读
- reactjs - 如何将多个复杂旋转应用于背景
- r - 访问堆栈溢出 (SO) 问题中的表以用作答案的数据框
- json - 处理包含 JSON 字符串集合的文件
- python - 使用 Fast API 接收图像,使用 cv2 处理它然后返回它
- r - 官方 CRAN R 包可以依赖英特尔 MKL 和 CMake 吗?(和检查?)
- node.js - 使用偏移量的 API 调用的 Nodejs 分页
- python - ImportError:无法导入名称“ChainMap”(pandas\compat\chainmap.py)
- python-2.7 - 如何模拟类中对象的方法?
- c++ - 为什么 make_move_iterator() 不能与 back_inserter() 一起使用?
- javascript - 我想为嵌入制作一个命令处理程序,但只有一个嵌入有效,而其他嵌入无效