Где я могу разместить определения исключений, общие для интерфейса?
Я привыкаю использовать zope.interface при разработке определенных классов, и это хорошо, но я немного не уверен насчет исключений. Я не видел ни одного документа, говорящего о них (хотя только после беглого поиска). Прежде всего, мне интересно, где поставить определенное исключение X, которое является общим для любой реализации интерфейса.
Я всегда мог поместить исключение в свой собственный модуль. Но целый модуль для чего может быть простым исключением? Я не против поставить его в тот же модуль, который определяет рассматриваемый интерфейс, но мне интересно, считается ли это плохой формой так или иначе?
В основном я хотел бы услышать от кого-то, кто немного использовал интерфейсы и знает соглашения для этого.
1 ответ
Лучшая практика - иметь interfaces
модуль, который включает в себя все документированные интерфейсы и соответствующие исключения, константы и события.
Таким образом, вы определяете API вашего пакета в одном четко определенном месте, и кто-то, ищущий интерфейс, может увидеть, что любые создаваемые исключения определены в том же месте.
Вот несколько примеров файлов interface.py из различных проектов: