Junior — Middle
Welke stappen moeten worden ondernomen zodat een instantie van een eigen klasse kan worden gebruikt als sleutel in een Python-woordenboek?
sobes.tech AI
Antwoord van AI
Om een instantie van een eigen klasse als sleutel in een Python-woordenboek te kunnen gebruiken, moet deze hashbaar en vergelijkbaar zijn. Hiervoor moeten de methoden __hash__() en __eq__() in de klasse worden geïmplementeerd. De methode __hash__ moet een unieke gehele waarde retourneren voor het object, rekening houdend met zijn belangrijke attributen, en __eq__ moet de gelijkheid van objecten definiëren.
Voorbeeld:
class MyKey:
def __init__(self, id):
self.id = id
def __hash__(self):
return hash(self.id)
def __eq__(self, other):
return isinstance(other, MyKey) and self.id == other.id
# Gebruik
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'waarde'
print(my_dict[key2]) # Zal 'waarde' afdrukken, omdat key1 == key2
Het is belangrijk dat de objecten onveranderlijk zijn met betrekking tot de attributen die worden gebruikt bij het hashen, anders kan de dictionary niet correct functioneren.