除了迭代两个对象的属性并手动比较它们的值之外,是否有其他方法可以检查两个对象是否具有相同的值?
发布于 2010-08-24 02:33:08
阐述德尔南的答案:
_NOTFOUND = object()
class Rational(object):
def __eq__(self, other):
for attr in ['numerator', 'denominator']:
v1, v2 = [getattr(obj, attr, _NOTFOUND) for obj in [self, other]]
if v1 is _NOTFOUND or v2 is _NOTFOUND:
return False
elif v1 != v2:
return False
return True
发布于 2010-08-24 02:34:14
发布于 2010-08-24 02:14:26
我认为object1.__dict__ == object2.__dict__
应该是你所需要的.
编辑:vars(object1) == vars(object2)
可能更具pythonic风格,尽管@delnan对没有__dict__
的对象(例如int
)提出了一个有效的观点。不过,我不同意自定义__eq__
是处理简单情况的更好方法的观点。有时候,如果快速和肮脏完全满足了你的需要,那么超越快速和肮脏的努力是不值得的。
https://stackoverflow.com/questions/3550336
复制相似问题