Sobes.tech
Junior — Middle

Koje korake je potrebno preduzeti da bi instanca vaše klase mogla da se koristi kao ključ u Python rečniku?

sobes.tech АИ

Одговор од АИ

Da instanca vaše vlastite klase može da se koristi kao ključ u Python rečniku, ona mora biti hashabilna i uporediva. Za to je potrebno implementirati metode __hash__() i __eq__() u klasi. Metoda __hash__ treba da vraća jedinstvenu celobrojnu vrednost za objekat, uzimajući u obzir njegove značajne atribute, a __eq__ treba da definiše jednakost objekata.

Primer:

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

# Upotreba
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'vrednost'
print(my_dict[key2])  # Ispisaće 'vrednost', jer je key1 == key2

Važno je da objekti budu nemutabilni u pogledu atributa koji se koriste u hashiranju, u suprotnom, rečnik može da radi netačno.