Sobes.tech
Junior — Middle

Ce pași trebuie urmați pentru ca o instanță a unei clase proprii să poată fi utilizată ca cheie într-un dicționar Python?

sobes.tech AI

Răspuns de la AI

Pentru ca o instanță a unei clase proprii să poată fi utilizată ca cheie într-un dicționar Python, trebuie să fie hashabilă și comparabilă. Pentru aceasta, trebuie implementate metodele __hash__() și __eq__() în clasă. Metoda __hash__ trebuie să returneze o valoare întreagă unică pentru obiect, ținând cont de atributele sale semnificative, iar __eq__ trebuie să definească egalitatea între obiecte.

Exemplu:

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

# Utilizare
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'valoare'
print(my_dict[key2])  # Va afișa 'valoare', deoarece key1 == key2

Este important ca obiectele să fie imuabile în privința atributelor utilizate în hash, altfel dicționarul poate funcționa incorect.