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