比较对象实例的属性是否相等

问题描述 投票:214回答:10

我有一个类MyClass,它包含两个成员变量foobar

class MyClass:
    def __init__(self, foo, bar):
        self.foo = foo
        self.bar = bar

我有两个此类的实例,每个实例的foobar具有相同的值:

x = MyClass('foo', 'bar')
y = MyClass('foo', 'bar')

但是,当我比较它们的相等性时,Python返回False

>>> x == y
False

如何使python认为这两个对象相等?

python equality
10个回答
308
投票

您应该实现方法__eq__


-6
投票

与==比较时的类实例不相等。最好的方法是将cmp


45
投票

您覆盖了对象中的__cmp__


5
投票

在您的课程中实现__ne__方法;像这样的东西:


4
投票

摘要:


1
投票

比较对象实例时,将调用__ne__函数。


0
投票

根据您的具体情况,您可以这样做:


0
投票

我编写了此文件,并将其放在我项目的__cmp__模块中。对于不是班级的情况,只需按计划进行,这将遍历两个对象并确保


-1
投票

如果要获得逐个属性的比较,并查看它是否失败以及在何处失败,可以使用以下列表理解:


-3
投票

我尝试了初始示例(请参见上面的7),但在ipython中不起作用。请注意,使用两个相同的对象实例实现时,cmp(obj1,obj2)返回“ 1”。奇怪的是,当我修改一个属性值并重新比较时,使用cmp(obj1,obj2),该对象将继续返回“ 1”。 (叹气...)

© www.soinside.com 2019 - 2024. All rights reserved.