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中重載對象函數屬性?