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