10
オブジェクトのリストがある場合、オブジェクトを比較するために__cmp__
メソッドを使用できます。これは、==
演算子がどのように動作するか、およびitem in list
関数に影響します。しかし、それはitem in set
関数には影響しないようです - 私はMyClassオブジェクトをどのように変更して、セットが項目を比較するかの振る舞いをオーバーライドすることができるのだろうかと思っています。python - オブジェクトがセット内にあるかどうかをテストするためにセットが使用する演算子
たとえば、下の3つのprintステートメントでTrueを返すオブジェクトを作成したいとします。現時点では、最後のprintステートメントはFalseを返します。
class MyClass(object):
def __init__(self, s):
self.s = s
def __cmp__(self, other):
return cmp(self.s, other.s)
instance1, instance2 = MyClass("a"), MyClass("a")
print instance2==instance1 # True
print instance2 in [instance1] # True
print instance2 in set([instance1]) # False
'set'実装が(値はすべて無視されます)ストレージ用の辞書を使用して辞書を操作(' dict_'でキー)の使用が含まれているためですキーのハッシュ – Noah