В основном любопытно.
Я заметил (по крайней мере, в py 2.6 и 2.7), что float
имеет все знакомые расширенные функции сравнения: __lt__()
, __gt__
, __eq__
и т. д.
>>> (5.0).__gt__(4.5)
True
но int
не работает
>>> (5).__gt__(4)
Traceback (most recent call last):
File "<input>", line 1, in <module>
AttributeError: 'int' object has no attribute '__gt__'
Что странно для меня, потому что сам оператор работает нормально
>>> 5 > 4
True
Даже строки поддерживают функции сравнения
>>> "hat".__gt__("ace")
True
, но все, что имеет int
, это __cmp__()
Мне это кажется странным, и поэтому мне было интересно, почему это произошло.
Только что протестировано, и он работает так, как ожидалось, в python 3, поэтому я предполагаю некоторые устаревшие причины. Тем не менее хотелось бы услышать нормальное объяснение ;)