NotImplemented

raise NotImplementedError

を間違えて、

raise NotImplemented

と、書いたら、エラーになりました。

TypeError: exceptions must be classes or instances, not NotImplementedType

NotImplementedとは、なんぞや?と、リファレンスを引いてみたところ・・・



NotImplemented


この型には単一の値しかありません。この値を持つオブジェクトはただ一つしか存在しません。
このオブジェクトは組み込み名 NotImplemented でアクセスされます。
数値演算に関するメソッドや拡張比較 (rich comparison) メソッドは、
演算子が該当する演算を行うための実装をもたない場合、この値を返すことがあります。
(演算子によっては、インタプリタが関連のある演算を試したり、他の代替操作を行います。) 真値は真 (true) です。





Noneみたいなものらしい。しかし、何に使うものなのか?


ググってみると、リファレンスの比較演算子の所にヒット。

事実上、 NotImplemented を返す演算子は、全く実装されていないものとして扱われます。

オブジェクト x および y に対して、まず x.__op__(y) が試されます。この演算が実装されていないか、
NotImplemented を返す場合、次に y.__rop__(x) が試されます。
この演算も実装されていないか、NotImplemented を返すなら、 TypeError 例外が送出されます。

なるほど。


しかし、普通にPythonを書いている限り、NotImplementedを使う事はなさそうだ。

広告を非表示にする