Cuando utilizo el código en Python 2 funciona bien, mientras que Python 3 me da el errorPython 2 y Python 3 __cmp__
class point:
def __init__(self,x,y):
self.x=x
self.y=y
def dispc(self):
return ('(' +str(self.x)+','+str(self.y)+')')
def __cmp__(self,other):
return ((self.x > other.x) and (self.y > other.y))
............... .................................................. ...
[email protected]:~/Documents/Programs$ python3 -i classes.py
>>> p=point(2,3)
>>> q=point(3,4)
>>> p>q
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: point() > point()
>>>
[email protected]:~/Documents/Programs$ python -i classes.py
>>> p=point(2,3)
>>> q=point(3,4)
>>> p>q
False
>>>
........................................ ...........................
En python 3 da un error en and
mientras trabaja para solo ==
y !=
.
Por favor, sugiera una solución.
La recomendación PEP 8 es proporcionar a todos los seis comparaciones ricos. Para hacerlo más fácil, use * functools.total_ordering *. –
¿cómo uso __lt y__eq__ en lugar de __cmp__? –
Bueno, 'lt' significa Less Than. Devuelve un valor booleano que indica si 'self' es menor que el otro parámetro. Los otros funcionan de manera similar. Estoy seguro de que puedes descubrir los detalles. –