Was muss ich tun, um meine Objekte eines benutzerdefinierten Typs als Schlüssel in einem Python-Wörterbuch zu verwenden (wobei ich nicht möchte, dass die "Objekt-ID" als Schlüssel fungiert), z
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
Ich möchte MyThing's als Schlüssel verwenden, die als gleich angesehen werden, wenn Name und Ort gleich sind. Von C # / Java bin ich es gewohnt, eine Methode für Gleichheit und Hashcode überschreiben und bereitstellen zu müssen, und verspreche, nichts zu mutieren, von dem der Hashcode abhängt.
Was muss ich in Python tun, um dies zu erreichen? Soll ich überhaupt?
(In einem einfachen Fall, wie hier, ist es vielleicht besser, einfach ein Tupel (Name, Ort) als Schlüssel zu platzieren - aber ich möchte, dass der Schlüssel ein Objekt ist.)
MyThing, wenn sie dasselbe haben nameund locationdas Wörterbuch indizieren, um denselben Wert zurückzugeben, auch wenn sie separat als zwei verschiedene "Objekte" erstellt wurden.