Ich benutze eine selbst gebaute Punktkoordinaten-Klasse (x, y).
Zum Vergleichen benutze ich hashlib, um einen Hash-String zu erzeugen, der über Hex in einen Integer verwandelt wird, der dann wiederum in __cmp__ zum Vergleich herangezogen wird.
Leider gibt __hash__ bisweilen long als Datenwert zurück, statt int, und so wird dann ein "TypeError: comparison did not return an int" Fehler geworfen.
Wie kann ich einen Long in ein Int verwandeln?
Oder besser: Gibt es eine sicherere Variante als meine dilettantische Hash-Bildung, um Objekte zu vergleichen?
Vielen Dank.
Code: Alles auswählen
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def __cmp__(self, other):
return hash(other) - hash(self)
def __hash__(self):
import hashlib
return int(hashlib.md5("%s,%s" % (self.x, self.y)).hexdigest(), 16)