Sobes.tech
Junior — Middle

Kādi soļi jāveic, lai jūsu paša klases instances varētu tikt izmantots kā atslēga Python vārdnīcā?

sobes.tech AI

Atbilde no AI

Lai jūsu pašu klases instances varētu tikt izmantotas kā atslēga Python vārdnīcā, tā jābūt hashable un salīdzināmai. Tam jāievieš metodes __hash__() un __eq__() klasē. Metode __hash__ jāatgriež unikāla vesela skaitļa vērtība, ņemot vērā tās nozīmīgās atribūtus, bet __eq__ jādefinē objektu vienādība.

Piemērs:

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

# Lietošana
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'vērtība'
print(my_dict[key2])  # Izvadīs 'vērtība', jo key1 == key2

Svarīgi, lai objekti būtu nemainīgi attiecībā uz atribūtiem, kas tiek izmantoti hashēšanai, citādi vārdnīca var nedarboties pareizi.