«Прошу прощения, а не разрешения» - объясните

Я не прошу личного "религиозного" мнения об этой философии, скорее, немного более технические.

Я понимаю, что эта фраза является одним из нескольких лакмусовых тестов, чтобы определить, является ли ваш код "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 / кроме ... Я использую их повсюду. Я просто не считаю правильным использовать их, чтобы отлавливать свои собственные ошибки, потому что я не был полным программистом.)

Или ... я полностью неправильно понимаю "Спроси прощения"? мантра?

Ответы на вопрос(8)

Ваш ответ на вопрос