Sobes.tech
Junior — Middle

Aké kroky je potrebné podniknúť, aby inštancia vlastnej triedy mohla byť použitá ako kľúč v slovníku Python?

sobes.tech AI

Odpoveď od AI

Aby inštancia vlastnej triedy mohla byť použitá ako kľúč v slovníku Python, musí byť hashovateľná a porovnateľná. Na to je potrebné implementovať metódy __hash__() a __eq__() v triede. Metóda __hash__ by mala vracať jedinečné celé číslo, ktoré zohľadňuje dôležité atribúty objektu, a __eq__ by mala definovať rovnosť objektov.

Príklad:

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

# Použitie
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'hodnota'
print(my_dict[key2])  # Vypíše 'hodnota', pretože key1 == key2

Dôležité je, aby objekty boli nemenné vzhľadom na atribúty používané pri hashovaní, inak môže slovník fungovať nesprávne.