首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >比较两个对象

比较两个对象
EN

Stack Overflow用户
提问于 2010-08-24 02:05:06
回答 3查看 28.2K关注 0票数 18

除了迭代两个对象的属性并手动比较它们的值之外,是否有其他方法可以检查两个对象是否具有相同的值?

EN

回答 3

Stack Overflow用户

发布于 2010-08-24 02:33:08

阐述德尔南的答案:

代码语言:javascript
复制
_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
票数 6
EN

Stack Overflow用户

发布于 2010-08-24 02:34:14

您可以直接比较namedtuple

否则,您必须定义自己的丰富比较__eq__和可能的__ne__

或您自己的__cmp__

有关详细信息,请参阅datamodel

票数 2
EN

Stack Overflow用户

发布于 2010-08-24 02:14:26

我认为object1.__dict__ == object2.__dict__应该是你所需要的.

编辑:vars(object1) == vars(object2)可能更具pythonic风格,尽管@delnan对没有__dict__的对象(例如int)提出了一个有效的观点。不过,我不同意自定义__eq__是处理简单情况的更好方法的观点。有时候,如果快速和肮脏完全满足了你的需要,那么超越快速和肮脏的努力是不值得的。

票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3550336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档