它没有直接在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
?
答案 0 :(得分:51)
True
等于1(这就是为什么它小于2)而bool
是int
的子类:基本上,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__
方法,它们等同于<
和>
。