2024-03-28 22:21:02 发布
网友
我想知道是否有可能在python中重载多重比较语法:
a < b < c
我知道单比较可能会过载,有可能过载吗?你知道吗
在内部,它作为a < b and b < c处理,因此您只需要重载__lt__、__gt__等
a < b and b < c
__lt__
__gt__
从docs:
x < y <= z is equivalent to x < y and y <= z, except that y is evaluated only once (but in both cases z is not evaluated at all when x < y is found to be false).
>>> import dis >>> dis.dis(lambda : a < b < c) 1 0 LOAD_GLOBAL 0 (a) 3 LOAD_GLOBAL 1 (b) 6 DUP_TOP 7 ROT_THREE 8 COMPARE_OP 0 (<) 11 JUMP_IF_FALSE_OR_POP 21 14 LOAD_GLOBAL 2 (c) 17 COMPARE_OP 0 (<) 20 RETURN_VALUE >> 21 ROT_TWO 22 POP_TOP 23 RETURN_VALUE
演示:
class A(object): def __lt__(self, other): print 'inside lt' return True def __gt__(self, other): print 'inside gt' return True ... >>> a = A() >>> 10 < a < 20 inside gt inside lt True
在内部,它作为
a < b and b < c
处理,因此您只需要重载__lt__
、__gt__
等从docs:
演示:
相关问题 更多 >
编程相关推荐