"Peça perdão não permissão" - explique

Não estou pedindo opiniões pessoais "religiosas" sobre essa filosofia, e sim algo um pouco mais técnico.

Eu entendo esta frase é um dos vários testes decisivos para ver se o seu código é "pythonic". Mas para mim, pythonic significa limpo, simples e intuitivo, não carregado com manipuladores de exceção para codificação incorreta.

Então, exemplo prático. Eu defino uma classe:

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

Agora, vindo de um ambiente procedural, em outra função eu quero fazer isso:

if foo.bar:
    # do stuff

Vou pegar uma exceção de atributo se eu fosse impaciente enao fiz faça o inicial foo = Nenhum. Então, "pedir perdão não permissão" sugere que eu deveria fazer isso em vez disso?

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

Por que seria melhor adicionar mais lógica em um bloco try apenas para poder deixar minha definição de classemais ambíguo? Por que não definir tudo inicialmente, portanto, explicitamenteconceder permissão?

(Não me agrade usando o try / exceto blocos ... eu os uso em todos os lugares. Eu só não acho certo usá-los para pegar meus próprios erros porque eu não era um programador completo.)

Ou ... eu entendi completamente o mantra "Ask Forgivess"?

questionAnswers(8)

yourAnswerToTheQuestion