在Python(2.7)中比较两个相同的对象返回False
我在Python中有一个函数,名为在Python(2.7)中比较两个相同的对象返回False,python,python-2.7,sqlite,compare,Python,Python 2.7,Sqlite,Compare,我在Python中有一个函数,名为object\u from\u DB。定义并不重要,只是它将ID值作为参数,使用sqlite3库从.db文件中的表中提取匹配值,然后在对象初始化时将这些值用作参数。使用此函数不会改变数据库 鉴于此,这个示例代码让我感到困惑 >>> x = object_from_DB(422) >>> y = object_from_DB(422) >>> x == y False 为什么会发生这种情况?什么样的技术会使x
object\u from\u 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
默认情况下,任何用户定义类的两个不同实例是不相等的:
>>> 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