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を使う事はなさそうだ。