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

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

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

Я получу исключение атрибута, если я был нетерпелив ине сделать начальный foo = Нет. Так, "прошу прощения, а не разрешения " предлагает мне сделать это вместо этого?

try:
    if foo.bar:
        # do stuff
except:
    # this runs because my other code was sloppy?

Почему для меня было бы лучше добавить дополнительную логику в блок try, чтобы я мог оставить определение своего классаболее двусмысленный? Почему бы не определить все изначально, а потому явнодать разрешение?

(Don»Не бейте меня по поводу использования блоков try / кроме ... Я использую их везде. Я просто нене думаю, что этоПраво использовать их, чтобы поймать мои собственные ошибки, потому что я не былТщательный программист.)

Или ... я совершенно не понимаю "Прошу прощения " мантра?

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

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