在Python(2.7)中比较两个相同的对象将返回False

时间:2016-06-06 00:33:11

标签: python python-2.7 sqlite compare

我在Python中有一个名为object_from_DB的函数。除了将ID值作为参数使用sqlite3库从.db文件中的表中提取匹配值,然后在初始化中将这些值用作参数时,定义并不重要一个对象。使用此功能不会更改数据库。

鉴于此,此示例代码令我感到困惑。

>>> x = object_from_DB(422)
>>> y = object_from_DB(422)
>>> x == y
False

为什么会发生这种情况,哪种技术会导致xy在比较时返回True

1 个答案:

答案 0 :(得分:3)

默认情况下,任何用户定义的类的两个不同实例都是不相等的:

>>> class X: pass
... 
>>> a = X()
>>> b = X()
>>> a == b
False

如果您想要不同的行为,则必须对其进行定义:

class Y:

    def __init__(self, value):
        self.value = value

    def __eq__(self, other):
        return self.value == other.value
>>> c = Y(3)
>>> d = Y(3)
>>> e = Y(4)
>>> c == d
True
>>> d == e
False