如何真实< 2实施?

时间:2016-11-04 22:55:47

标签: python boolean python-2.x comparison-operators

它没有直接在bool上实现。

>>> 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

3 个答案:

答案 0 :(得分:51)

Python中的{p> True等于1(这就是为什么它小于2)而boolint的子类:基本上,False和{{1带有时髦True s的0和1。

至于如何在整数上实现比较,Python使用repr(),这是在Python中编写比较的老派方式。 (Python 3不支持__cmp__(),这就是为什么它在__cmp__()实现的原因。)请参阅https://docs.python.org/2/reference/datamodel.html#object.__cmp__

答案 1 :(得分:23)

您没有找到Locale uslocale = new Locale.Builder().setLanguage("en").setRegion("US").build(); NumberFormat.getCurrencyInstance(uslocale).format(payment); 因为super(bool, True).__lt__使用遗留int方法而不是Python 2上的丰富比较。它是__cmp__

答案 2 :(得分:0)

True是一个公正的名称,指的是int类型的对象,特别是值1.表达式True < 2等于1 < 2。相同,False等于0.在Python 2中,您有一个方法__cmp__,如果值等于,则返回0;如果一个值比其他值大,则返回-1,如果是一个值,则返回1太低于其他价值。例如:

>>> True.__cmp__(1)
0
>>> True.__cmp__(0)
1
>>> True.__cmp__(-1)
1
>>> True.__cmp__(0)
1
>>> True.__cmp__(1)
0
>>> True.__cmp__(2)
-1

在Python 3中,您有__lt____gt__方法,它们等同于<>