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

Comparing two identical objects in Python (2.7) returns False(在 Python (2.7) 中比较两个相同的对象返回 False)
本文介绍了在 Python (2.7) 中比较两个相同的对象返回 False的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a function in Python called object_from_DB. The definition isn't important except that it takes an ID value as an argument, uses the sqlite3 library to pull matching values from a table in a .db file, and then uses those values as arguments in the initialization of an object. The database is in no way changed by the use of this function.

鉴于此,这个示例代码让我感到困惑.

This sample code, in light of this, baffles me.

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

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

Why does this happen, and what sort of technique will cause x and y to return True when compared?

推荐答案

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

By default, two distinct instances of any user-defined class are unequal:

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

如果你想要不同的行为,你必须定义它:

If you want different behaviour, you have to define it:

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

这篇关于在 Python (2.7) 中比较两个相同的对象返回 False的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Flask + PyMySQL giving error no attribute #39;settimeout#39;(FlASK+PyMySQL给出错误,没有属性#39;setTimeout#39;)
FastAPI + Tortoise ORM + FastAPI Users (Python) - Relationship - Many To Many(FastAPI+Tortoise ORM+FastAPI用户(Python)-关系-多对多)
Inserting NaN value into MySQL Database(将NaN值插入MySQL数据库)
Window functions not working in pd.read_sql; Its shows error(窗口函数在pd.read_sql中不起作用;它显示错误)
(Closed) Leaflet.js: How I can Do Editing Geometry On Specific Object I Select Only?((已关闭)Leaflet.js:如何仅在我选择的特定对象上编辑几何图形?)
in sqlite update trigger with multiple if/Case Conditions(在具有多个IF/CASE条件的SQLite UPDATE触发器中)