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.