Python3, вызывающий super __init__ из пользовательского исключения - PullRequest
0 голосов
/ 26 сентября 2018

Я создал пользовательское исключение в Python 3, и весь код работает просто отлично.Но есть одна вещь, которую я не могу обернуть вокруг себя: почему мне нужно отправлять свое сообщение в класс __ init __ () класса Exception и как оно преобразует пользовательское исключение в это строковое сообщение, когдаЯ пытаюсь напечатать исключение, так как код в Exception или даже BaseException мало что делает.

Не совсем могу понять, почему вызывается super () .__ init __ () из customисключение?

1 Ответ

0 голосов
/ 26 сентября 2018

Это так, что ваши пользовательские исключения могут начинаться с тех же атрибутов экземпляра, что и объект BaseException, включая атрибут value, в котором хранится сообщение об исключении, которое необходимо некоторым другим методам, таким как __str__, что позволяет преобразовать объект исключения в строку напрямую.Вы можете пропустить вызов super().__init__ в __init__ вашего подкласса и вместо этого инициализировать все необходимые атрибуты самостоятельно, если хотите, но тогда вы не воспользуетесь одним из ключевых преимуществ наследования классов.Всегда вызывайте super().__init__, если только у вас нет особых причин не использовать какие-либо атрибуты экземпляра родительского класса.

...