"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"?