342 votes

Pourquoi retourner NotImplemented au lieu de générer NotImplementedError

Je viens de découvrir python a un singleton appelé . Pourquoi quelqu'un voudrait jamais retourner au lieu de déclencher la exception ? N’il vient rend plus difficile à trouver des bugs, tel qu’un code qui exécute des méthodes non valides ?

Je me demandais ici...

333voto

SpliFF Points 21945

C'est parce qu' __lt__() et liées méthodes de comparaison est assez couramment utilisé indirectement dans la liste des tris et. Parfois, l'algorithme ne choisissez d'essayer une autre façon ou choisir un gagnant par défaut. Le déclenchement d'une exception pourrait sortir de la sorte à moins d'être pris, alors qu' NotImplemented n'a pas soulevées et peut être utilisé dans d'autres tests.

http://jcalderone.livejournal.com/32837.html

Pour résumer ce lien:

"NotImplemented des signaux à l'exécution qu'il devrait demander à quelqu'un d'autre pour satisfaire à l'opération. Dans l'expression a == b, si a.__eq__(b) retours NotImplemented, puis de Python essaie b.__eq__(a). Si b en sait assez pour revenir True ou False, alors l'expression de la réussite. Si elle ne le fait pas, le moteur d'exécution sera le comportement intégré (qui est basé sur l'identité pour == et !=)."

17voto

RichieHindle Points 98544

Ma supposition serait performance. Dans une situation comme des comparaisons riches, où vous pourriez faire beaucoup d’opérations en peu de temps, mise en place et gère beaucoup d’exceptions pourraient prendre beaucoup plus de simplement renvoyer une `` valeur.

-7voto

jcoon Points 5693

Il y a les fonctions qui déclenchent des Exceptions et des fonctions qui ne sont pas, `` pourrait être pour celui-ci... cela dépend vraiment du programmeur/conception. C’est pourquoi ils sont tous deux fins.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X