10
在Python类中支持等价(“平等”)的优雅方法
编写自定义类时,通过==和!=运算符允许等效性通常很重要。在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 False 也就是说,a …