它沒有直接在布爾上實現。True <2是如何實現的?
>>> True.__lt__(2)
AttributeError: 'bool' object has no attribute '__lt__'
而且它顯然並未實現int
之一:
>>> super(bool, True).__lt__(2)
AttributeError: 'super' object has no attribute '__lt__'
還有就是__lt__
爲2
沒有反射版本控制操作,而且由於int
類型不是bool
一個子類,它永遠不會反正工作。
Python 3中的行爲與預期:
>>> True.__lt__(2)
True
那麼,如何在Python 2實施True < 2
?
通過隱式轉換爲整數也許? – Carcigenicate
您可能會發現這個技巧很有趣:'[exprFalse,exprTrue] [condition]'相當於'exprTrue if condition else exprFalse' – BlackBear
@BlackBear除了它同時評估兩者。 print(「True」)if else else print(「False」)vs'[print(「False」),print(「True」)] [condition]'。 – immibis