Я никогда не понимал обработку исключений в Python (или любой язык, если честно). Я экспериментировал с пользовательскими исключениями и нашел следующее поведение.Внедрение `Exception .__ str __()` в Python
class MyError(Exception):
def __init__(self, anything):
pass
me = MyError("iiiiii")
print(me)
Выход:
iiiiii
Я полагаю, что print()
звонки Exception.__str__()
.
Каким образом базовый класс Exception
знает для печати iiiiii
? Строка "iiiiii"
была передана конструктору MyError
по аргументу anything
, но anything
не хранится нигде в MyError
вообще!
Кроме того, конструктор MyError
не вызывает конструктор своего суперкласса (исключение). Итак, как print(me)
печать iiiiii
?
Какая версия Python? Это невозможно воспроизвести в Python 2.7. –
Извините, забыл упомянуть, Python 3.5.1. – Ray