Je ne demande pas d'avis personnel "religieux" sur cette philosophie, mais plutôt quelque chose d'un peu plus technique.
Je crois savoir que cette phrase est l'un des nombreux tests décisifs permettant de déterminer si votre code est "pythonique". Mais pour moi, pythonique signifie propre, simple et intuitif, pas chargé de gestionnaires d'exceptions pour un mauvais codage.
Donc, exemple pratique. Je définis une 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
Maintenant, venant d'un fond procédural, dans une autre fonction je veux faire ceci :
if foo.bar:
# do stuff
J'obtiendrai une exception d'attribut si j'ai été impatient et n'a pas faire l'initial foo = None. Donc, "demander pardon pas la permission" suggère que je devrais faire ceci à la place ?
try:
if foo.bar:
# do stuff
except:
# this runs because my other code was sloppy?
Pourquoi serait-il préférable pour moi d'ajouter une logique supplémentaire dans un bloc try juste pour pouvoir laisser la définition de ma classe plus ambiguës ? Pourquoi ne pas définir tout au départ, donc explicitement accorder la permission ?
(Ne me reprochez pas d'utiliser les blocs try/except... Je les utilise partout. Je pense juste que ce n'est pas bien de les utiliser pour attraper mes propres erreurs parce que je n'étais pas un programmeur minutieux).
Ou... est-ce que j'ai complètement mal compris le mantra "Demandez pardon" ?