Co muszę zrobić, aby użyć obiektów niestandardowego typu jako kluczy w słowniku Pythona (gdzie nie chcę, aby „identyfikator obiektu” działał jako klucz), np.
class MyThing:
def __init__(self,name,location,length):
self.name = name
self.location = location
self.length = length
Chciałbym użyć MyThing jako kluczy, które są uważane za takie same, jeśli nazwa i lokalizacja są takie same. Od C # / Java jestem przyzwyczajony do przesłonięcia i podania metody equals i hashcode, i obiecuję, że nie będę mutować niczego, od czego zależy hashcode.
Co muszę zrobić w Pythonie, aby to osiągnąć? Powinienem w ogóle?
(W prostym przypadku, tak jak tutaj, być może lepiej byłoby po prostu wstawić krotkę (nazwa, lokalizacja) jako klucz - ale weź pod uwagę, że chcę, aby klucz był obiektem)
MyThing, jeśli mają takie same namei location, aby zaindeksować słownik, aby zwrócić tę samą wartość, nawet jeśli zostały utworzone osobno jako dwa różne „obiekty”.