例如一个类 Point
class Point: def __init__(): self.x self.y
和一个 tuple , 例如( 2 ,3 )
Point 是否可以实现和这个 tuple 直接比较相等,Point(2,3) == (2,3)? 如果可以是实现哪个方法,谢谢
1 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 |
![]() | 2 UN2758 2023-06-08 19:25:59 +08:00 ==调用的是__eq__ 方式,自己实现就可以比较了 |
![]() | 3 MiketsuSmasher 2023-06-09 13:57:06 +08:00 via Android 在你的类里实现一下 __eq__ 方法,定义一下和 tuple 比较时的行为,这就够了。实例的这个方法会在做相等比较 == 时被调用。 |
![]() | 4 lanhuermao 2023-06-14 17:55:35 +08:00 可以的,楼上几位已经说的很清楚了,Python 中的等于比较本质上是对象的 `__eq__` 方法在运算。 类似的还有: __ne__: 不等于 __gt__: 大于 __ge__: 大于等于 __lt__: 小于 __le__: 小于等于 |