Поскольку MyException
наследует Exception.__str__
, к чему впервые обращается print
(потому что неявный вызов - str(e)
, который внутренне возвращается к __repr__
, если __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__