Sobes.tech
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.