«Прошу прощения, а не разрешения» - объясните
Я не прошу личного "религиозного" мнения об этой философии, скорее, немного более технические.
Я понимаю, что эта фраза является одним из нескольких лакмусовых тестов, чтобы определить, является ли ваш код "pythonic". Но для меня pythonic означает чистый, простой и интуитивно понятный, не загруженный обработчиками исключений для плохого кодирования.
Итак, практический пример. Я определяю класс:
class foo(object):
bar = None
def __init__(self):
# a million lines of code
self.bar = "Spike is my favorite vampire."
# a million more lines of code
Теперь, исходя из процедурного фона, в другой функции я хочу сделать это:
if foo.bar:
# do stuff
Я получу исключение атрибута, если я был нетерпелив иdid not сделать начальный foo = Нет. Итак, «просите прощения, а не разрешения» предлагает мне сделать это вместо этого?
try:
if foo.bar:
# do stuff
except:
# this runs because my other code was sloppy?
Почему для меня было бы лучше добавить дополнительную логику в блок try, чтобы я мог оставить определение своего классаmore ambiguous? Почему бы не определить все изначально, а потому явноgrant permission?
(Не бейте меня из-за использования блоков try / кроме ... Я использую их повсюду. Я просто не считаю правильным использовать их, чтобы отлавливать свои собственные ошибки, потому что я не был полным программистом.)
Или ... я полностью неправильно понимаю "Спроси прощения"? мантра?