8
A
回答
14
内部,它作为a < b and b < c
处理,所以你需要重载只__lt__
,__gt__
等
从docs:
X <Ÿ< = z是等价于x < y和y < = z,除了y是 只评估一次(但是在两种情况下,当 x < y被发现是错误时根本不评估z)。
>>> 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
相关问题
- 1. 是否有可能在python中有丰富的python比较?
- 2. Python多重比较风格?
- 3. C#多重比较可能吗?
- 4. 是否有可能在C++中有多态成员重载?
- 5. 是否有可能重载模板类?
- 6. Vimscript - 是否有可能重载映射?
- 7. 是否有可能重载PHP
- 8. 是否有可能重载webservices中的方法?
- 9. 是否有可能重载JSF 1.1/Facelets中的EL方法
- 10. 是否有可能重写Python中的namedtuple方法?
- 11. 多重比较的正确语法是什么?
- 12. 是否有可能给更多权重的Lucene.Net搜索术语
- 13. Python的比较运算符重载
- 14. Ruby Rails:是否有可能在ActionController中重载索引方法?
- 15. MySQL:是否有性能比较数字与重要的精度
- 16. 语法:python比较
- 17. 是否有可能重载abstractTableModel上的getValueAt方法?
- 18. 链接比较(重载不可重载的“和”运算符)
- 19. SparkSQL - isIn()的性能与多重比较的比较
- 20. C++中是否有可用的语义比较工具?
- 21. 是否有可能重载GWT中的异步回调?
- 22. 是否有可能在python中重叠不同的模块?
- 23. 比较列时顺序是否重要?
- 24. 的Javascript多重比较表达式语法
- 25. 重载比较运算符
- 26. 是否有可能重写C#中WebSecurity类中的方法?
- 27. 是否可以重载主方法?
- 28. Web方法是否可以重载?
- 29. 缩写Python中的双重比较
- 30. 是否有可能在typescript中重载对象函数属性?