wim*_*wim 24 python boolean python-2.x comparison-operators
它没有直接在bool上实现.
>>> True.__lt__(2)
AttributeError: 'bool' object has no attribute '__lt__'
Run Code Online (Sandbox Code Playgroud)
它显然没有实现int:
>>> super(bool, True).__lt__(2)
AttributeError: 'super' object has no attribute '__lt__'
Run Code Online (Sandbox Code Playgroud)
没有反映版本的__lt__for 2来控制操作,因为int类型不是它的子类,bool无论如何都不会工作.
Python 3的行为符合预期:
>>> True.__lt__(2)
True
Run Code Online (Sandbox Code Playgroud)
那么,如何True < 2在Python 2中实现?
kin*_*all 50
True在Python中等于1(这就是为什么它小于2)并且bool是一个子类int:基本上,False并且True是0和1与funky repr()s.
至于如何在整数上实现比较,Python使用__cmp__(),这是在Python中编写比较的老派方式.(Python 3不支持__cmp__(),这就是它在__lt__()那里实现的原因.)参见https://docs.python.org/2/reference/datamodel.html#object.__cmp__
| 归档时间: |
|
| 查看次数: |
2345 次 |
| 最近记录: |