如何比较 Python 中的两个实例?
How to compare two instances in Python?
是否可以比较两个 'instances'?我有一个变量和一个列表。变量的类型为 'instance',列表中的项目也具有相同的类型。当我将变量与列表中的相同项目进行比较时:
cities = [USA, Poland, England, GB, Italy]
variable = Italy
variable == cities[-1]
我收到 'False' 作为输出。我 100% 确定这两个元素是相同的。
提前致谢!
Python 中有两种类型的对象。可变和不可变。
不可变
- 无法更改状态。
- 通常被认为是“原始”类型。
int
、float
、string
、tuple
等
可变
- 可以更新和更改状态。
list
、dict
、set
、bytearray
,通过 class
令牌创建的任何对象。
根据您在说 variable
时讨论的类型,这将影响运算符 ==
。将始终根据实际值检查不可变类型(例如 1 == 1
是 True
),其中根据对象的 __eq__
方法检查可变类型(重载 ==
符号) .
列出的所有可变类型 - 除了用 class
初始化的新对象 - 都有一个内置的 __eq__
方法,当出现 ==
符号时使用。假设您使用的是自己的对象,以下面的例子为例:
class Obj:
def __init__(self, integer):
self.integer = integer
print(Obj(1) == Obj(1)) # False
请注意,尽管 integer
对于每个 Obj
都是相等的,但由于 Obj
是一个没有 __eq__
方法的可变类型 Python 将根据对象在内存中的 space 检查对象是否彼此相等 - 换句话说,如果它是 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
是否可以比较两个 'instances'?我有一个变量和一个列表。变量的类型为 'instance',列表中的项目也具有相同的类型。当我将变量与列表中的相同项目进行比较时:
cities = [USA, Poland, England, GB, Italy]
variable = Italy
variable == cities[-1]
我收到 'False' 作为输出。我 100% 确定这两个元素是相同的。
提前致谢!
Python 中有两种类型的对象。可变和不可变。
不可变
- 无法更改状态。
- 通常被认为是“原始”类型。
int
、float
、string
、tuple
等
可变
- 可以更新和更改状态。
list
、dict
、set
、bytearray
,通过class
令牌创建的任何对象。
根据您在说 variable
时讨论的类型,这将影响运算符 ==
。将始终根据实际值检查不可变类型(例如 1 == 1
是 True
),其中根据对象的 __eq__
方法检查可变类型(重载 ==
符号) .
列出的所有可变类型 - 除了用 class
初始化的新对象 - 都有一个内置的 __eq__
方法,当出现 ==
符号时使用。假设您使用的是自己的对象,以下面的例子为例:
class Obj:
def __init__(self, integer):
self.integer = integer
print(Obj(1) == Obj(1)) # False
请注意,尽管 integer
对于每个 Obj
都是相等的,但由于 Obj
是一个没有 __eq__
方法的可变类型 Python 将根据对象在内存中的 space 检查对象是否彼此相等 - 换句话说,如果它是 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