我在Python中有一个名为object_from_DB
的函数。定义并不重要,它采用 ID 值作为参数,使用 sqlite3
库从.db文件中的表中提取匹配值,然后在对象初始化中将这些值用作参数。使用此功能不会更改数据库。
鉴于此,此示例代码让我感到困惑。
>>> x = object_from_DB(422)
>>> y = object_from_DB(422)
>>> x == y
False
为什么会发生这种情况,比较时会导致x
和y
返回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