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



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

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

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

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

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

>>> 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

相关内容

  • 没有找到相关文章