10
Pythonクラスで等価(「等価」)をサポートするエレガントな方法
カスタムクラスを作成する場合、==and !=演算子を使用して同等性を許可することがしばしば重要になります。Pythonでは、これはそれぞれ__eq__と__ne__特別なメソッドを実装することで可能になります。これを行うために私が見つけた最も簡単な方法は、次の方法です。 class Foo: def __init__(self, item): self.item = item def __eq__(self, other): if isinstance(other, self.__class__): return self.__dict__ == other.__dict__ else: return False def __ne__(self, other): return not self.__eq__(other) これを行うよりエレガントな方法を知っていますか?上記__dict__のs を比較する方法を使用することの特定の欠点を知っていますか? 注:少し明確化します- __eq__と__ne__が定義されていない場合、この動作が見られます: >>> a = Foo(1) >>> b = Foo(1) >>> a is b False >>> a == b …