Ответ 1
Прежде всего: ваш код действителен, читабельен, краток... так что это может быть не способ (idioms развивается со временем и новыми языковыми функциями), но это, безусловно, один из способов сделать это с помощью pythonic.
Во-вторых, всего два наблюдения:
Стандартный способ генерации ошибок в python - raise Exceptions. Вы можете, конечно, обернуть свое исключение в рамках функции, но, поскольку это довольно необычно, мне просто интересно, выбрали ли вы этот дизайн по какой-то определенной причине. Поскольку вы можете написать свой собственный класс Exception, даже шаблонный код, например, запись сообщения об ошибке в файл, может проходить внутри самого класса, а не в функции обертки.
Способ написания теста таков, что вы не сможете назначить None
как значение для переменных. Это может быть не проблема сейчас, но может ограничить вашу гибкость в будущем. Альтернативный способ проверить инициализацию может состоять в том, чтобы просто не объявить начальное значение для рассматриваемой переменной, а затем сделать что-то по строкам:
try:
self.variable_name
except NameError:
# here the code that runs if the variable hasn't been initialised
finally:
# [optional] here the code that should run in either case