В чем преимущество следующего наследования - PullRequest
0 голосов
/ 23 мая 2019

Я часто читаю код библиотек

Я встречал следующие фрагменты кода.Фрагменты кода взяты из библиотеки расписаний python

Я искал в Интернете, но не нашел удовлетворительных ответов

class ScheduleError(Exception):
    """Base schedule exception"""
    pass


class ScheduleValueError(ScheduleError):
    """Base schedule value error"""
    pass


class IntervalError(ScheduleValueError):
    """An improper interval was used"""
    pass

Я хотел бы знать, в чем преимущество наследования от класса, которыйне имеет атрибутов или методов

Я могу извлечь пользу из теоретических и практических объяснений

1 Ответ

0 голосов
/ 23 мая 2019

Идея в том, что вы можете точно настроить исключения, которые хотите перехватить:

try:
    f() # may raise one of ScheduleError
except IntervalError:
    # do something about it

, имея иерархию, как указано выше, вы можете выбрать, какие исключения вы хотите обработать в предложении except,вы можете даже поймать все, что может пойти не так в f с except Exception (не рекомендуется!).

вся иерархия исключений в pyhton хорошо документирована.

...