__ne__
と呼ばれる魔法のメソッドが、Pythonでオブジェクト!=
の比較でトリガーされます。Python 2.7 __ne__が定義されていない場合に比較されるもの
例:
class A(object):
def __init__(self, a):
self.a = a
def __ne__(self, other):
return self.a != other.a
A(3) != A(3) # produces False
A(3) != A(2) # produces True
質問:__ne__
が定義されていない場合はボンネットの下に何が起こる
?
メモ: python 3.x !=
の比較は、いずれかの逆順であると定義されています。__eq__
が返します。
オブジェクトIDが比較されていると思います。この場合、シングルトンがないと仮定すると、!=
の比較はすべてTrue
を返す必要があります。しかし、明らかに異なる環境で同じコードが異なる結果を生み出していたので、オブジェクトIDの代わりに比較されるものがあります。
どこから取りましたか?この機能のC実装へのリンクはありますか? – vovaminiof
@vovaminiofが編集しました。 – turkus