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 name
i location
, aby zaindeksować słownik, aby zwrócić tę samą wartość, nawet jeśli zostały utworzone osobno jako dwa różne „obiekty”.