Python 的一个类能不能和一个 tuple 比较且相等

2023-06-08 19:18:58 +08:00
 smdbh

例如一个类 Point

class Point:
	def __init__():
        self.x
        self.y

和一个 tuple , 例如( 2 ,3 )

Point 是否可以实现和这个 tuple 直接比较相等,Point(2,3) == (2,3)? 如果可以是实现哪个方法,谢谢

1129 次点击
所在节点    Python
4 条回复
with
2023-06-08 19:24:06 +08:00
Point 类中实现 eq 方法就行
def __eq__(self, other):
if isinstance(other, tuple):
return (self.x, self.y) == other
elif isinstance(other, Point):
return (self.x, self.y) == (other.x, other.y)
else:
return False
UN2758
2023-06-08 19:25:59 +08:00
==调用的是__eq__ 方式,自己实现就可以比较了
MiketsuSmasher
2023-06-09 13:57:06 +08:00
在你的类里实现一下 __eq__ 方法,定义一下和 tuple 比较时的行为,这就够了。实例的这个方法会在做相等比较 == 时被调用。
lanhuermao
2023-06-14 17:55:35 +08:00
可以的,楼上几位已经说的很清楚了,Python 中的等于比较本质上是对象的 `__eq__` 方法在运算。
类似的还有:
__ne__: 不等于
__gt__: 大于
__ge__: 大于等于
__lt__: 小于
__le__: 小于等于

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX