如何在Python中比较两个实例



是否有可能比较两个"实例"?我有一个变量和一个列表。变量的类型为"instance",列表中的项也具有相同的类型。当我将变量和列表中的相同项目进行比较时:

cities = [USA, Poland, England, GB, Italy]
variable = Italy
variable == cities[-1]

我收到了"False"作为输出。我百分之百肯定这两个元素是相同的。

提前感谢!

Python中有两种类型的对象。可变的,不变的。

不可变

  • 状态无法更改
  • 通常被认为是";基元";类型
  • intfloatstringtuple

可突变

  • 状态可以更新和更改
  • listdictsetbytearray,通过class令牌创建的任何对象

根据您在说variable时讨论的类型,这将影响运算符==。不可变类型将始终根据实际值进行检查(例如,1 == 1True(,其中可变类型根据对象的__eq__方法(重载==符号(进行检查。

除了用class初始化的新对象之外,列出的所有可变类型都有一个内置的__eq__方法,当出现==符号时使用这些方法。假设您正在使用自己的对象,以以下为例:

class Obj:
def __init__(self, integer):
self.integer = integer
print(Obj(1) == Obj(1)) # False

请注意,尽管integer对于每个Obj都是相等的,但由于Obj是一个不带__eq__方法的可变类型,Python将根据对象在内存中的空间来检查对象是否彼此相等——换句话说,要使其成为True,对象必须与您初始化的对象完全相同。

class Obj:
def __init__(self, integer):
self.integer = integer
obj = Obj(1)
print(obj == obj)  # True

要手动重载==符号,必须使用__eq__方法:

class Obj:
def __init__(self, integer):
self.integer = integer
def __eq__(self, other):
# Comparison of two integers.
return self.integer == other.integer
print(Obj(1) == Obj(1))  # True

相关内容

  • 没有找到相关文章

最新更新