Python set([])は、2つのオブジェクトが等しいかどうかをどのようにチェックしますか?これをカスタマイズするには、オブジェクトでどのメソッドを定義する必要がありますか?
Pythonで「コンテナ」オブジェクトまたはクラスを作成する必要があります。これは、私が定義した他のオブジェクトの記録を保持します。このコンテナの要件の1つは、2つのオブジェクトが同一であると見なされた場合、1つ(いずれか1つ)が削除されることです。私が最初に考えたのはset([])、この要件を満たすために、を含むオブジェクトとしてを使用することでした。 ただし、セットは2つの同一のオブジェクトインスタンスの1つを削除しません。作成するには何を定義する必要がありますか? これがPythonコードです。 class Item(object): def __init__(self, foo, bar): self.foo = foo self.bar = bar def __repr__(self): return "Item(%s, %s)" % (self.foo, self.bar) def __eq__(self, other): if isinstance(other, Item): return ((self.foo == other.foo) and (self.bar == other.bar)) else: return False def __ne__(self, other): return (not self.__eq__(other)) 通訳 >>> set([Item(1,2), Item(1,2)]) …