1. ホーム
  2. python

[解決済み] NotImplementedErrorを発生させずにNotImplementedを返す理由

2022-03-15 03:14:41

質問

Pythonは、シングルトンである NotImplemented .

なぜ、誰かが今まで返したいと思ったのか NotImplemented を上げるのではなく NotImplementedError 例外が発生するのでしょうか?無効なメソッドを実行するコードなどのバグを見つけにくくするだけではないでしょうか?

解決方法は?

それは __lt__() と関連する比較方法は、リストソートなどで間接的にかなりよく使われています。アルゴリズムが別の方法を試したり、デフォルトの勝者を選んだりすることもあります。例外が発生すると、それが捕捉されない限りソートから外れてしまいますが、一方 NotImplemented が発生しないので、さらにテストに使用することができます。

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

そのリンク先を要約すると

" NotImplemented はランタイムに、この操作を満たすために他の誰かに依頼するように合図する。式中 a == b もし a.__eq__(b) を返します。 NotImplemented で、Pythonが試すのは b.__eq__(a) . もし b を返すのに十分な知識を持っています。 True または False であれば、式は成功する可能性があります。そうでない場合、ランタイムは組み込みの動作にフォールバックする(これは ==!= )."