In [32]: object() > 0
Out[32]: True
De hecho, es mayor que cualquier número entero que he probado.¿Por qué `object()> 0` True en Python?
In [32]: object() > 0
Out[32]: True
De hecho, es mayor que cualquier número entero que he probado.¿Por qué `object()> 0` True en Python?
Debido Python 2.x trató de hacer la comparación entre los objetos disponibles de diferentes tipos (aunque no tienen sentido).
Se fija en Python 3:
>>> object() > 0
Traceback (most recent call last):
File "<pyshell#320>", line 1, in <module>
object() > 0
TypeError: unorderable types: object() > int()
El orden utilizado en Python 2.x:
None < Numbers < [Other types in alphabetical order]
Los números son: int
, bool
y float
pero no complex
porque no pueden compararse
Asimismo, los objetos de las clases de estilo antiguo (llamado instance
objetos) mantenerse entre None
y Numbers
por alguna extraña razón.
Es cierto que, desde una perspectiva amplia, la comparación de diferentes tipos de objetos no tiene sentido, pero es bueno poder ordenar tipos heterogéneos y obtener un ordenamiento uniforme. –
@JBernardo ¿Podría agregar un enlace a una sección relacionada en la documentación de Python2.x? – satoru
@ Satoru.Logic Aquí está el [link] (http://docs.python.org/library/stdtypes.html#comparisons). Lea el cuadro "Detalle de implementación de CPython" – JBernardo
Es comparar la dirección de el objeto. Si conoce C/C++, esto es aritmética de puntero.
>>> object() < object()
True
>>> object() > object()
False
En el primer ejemplo, el primer objeto() pasa a ser asignada anteriormente en la memoria de la segunda, por lo tanto es 'menor que' el otro.
pesar de todo, usted no debería estar comparando punteros como esto de todos modos. :)
Puede confirmarlo utilizando la función 'id' (http://docs.python.org/library/functions.html#id). es decir .: id (object()) devolverá un entero. Ese es el valor que se usa para comparar a cero. – stderr
Hace eso para dos objetos del mismo tipo que no tienen una comparación definida, pero para objetos de diferentes tipos, la respuesta de JBernardo es correcta. –
¿cuál es tu esperas? ¿igual? – Takahiro
@ eric.f Error, por supuesto. – satoru