NotImplementedError を発生させる代わりに NotImplemented を返すのはなぜですか? 質問する

NotImplementedError を発生させる代わりに NotImplemented を返すのはなぜですか? 質問する

Pythonにはシングルトンと呼ばれるものがありますNotImplemented

なぜ誰かが戻りたいのかNotImplementedNotImplementedError例外ですか? 無効なメソッドを実行するコードなどのバグを見つけるのが難しくなるだけではないでしょうか?

ベストアンサー1

これは__lt__()、および関連する比較メソッドがリストのソートなどで間接的によく使用されるためです。アルゴリズムによっては、別の方法を試したり、デフォルトの勝者を選択したりすることがあります。例外が発生すると、キャッチされない限りソートが中断されますが、 はNotImplemented発生せず、以降のテストで使用できます。

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

そのリンクを要約すると次のようになります。

「はNotImplemented、ランタイムに、演算を満たすために他の誰かに依頼する必要があることを通知します。式 でa == ba.__eq__(b)が を返す場合NotImplemented、Python は を試しますb.__eq__(a)。またはをb返すことが十分にわかっている場合、式は成功します。 そうでない場合、ランタイムは組み込みの動作 (およびの同一性に基づく) にフォールバックします。」TrueFalse==!=

おすすめ記事