Windowsでpython 2.7.3を使用しています。__instancecheck__
マジックメソッドをクラスメソッドとしてオーバーライドしてみました。しかし、私はそれを機能させることはできません。
class Enumeration(int):
@classmethod
def __instancecheck__(cls, inst):
if type(inst) == cls:
return True
if isinstance(inst, int) and inst in range(0,10):
return True
return False
print isinstance(1, Enumeration) # prints False
print isinstance(1, Enumeration()) # prints True
最初の print ステートメントは True になると思います。しかし、魔法のメソッド__instancecheck__
は呼び出されていないようです。isinstance
そして、2番目のパラメーターとしてクラス/タイプを取る必要があるため、2番目のprintステートメントが機能する理由がわかりません。
誰が問題が何であるか知っていますか?ありがとう。