Sobes.tech
Junior — Middle

Milyen lépéseket kell megtenni ahhoz, hogy saját osztály példánya használható legyen kulcsként egy Python szótárban?

sobes.tech MI

Válasz az MI-től

Annak érdekében, hogy saját osztály példánya Python szótárban kulcsként használható legyen, hash-elhető és összehasonlítható kell legyen. Ehhez implementálni kell az __hash__() és __eq__() metódusokat az osztályban. Az __hash__ metódusnak egy egyedi egész értéket kell visszaadnia, amely figyelembe veszi a fontos attribútumokat, az __eq__ pedig az objektumok egyenlőségét határozza meg.

Példa:

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

# Használat
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'érték'
print(my_dict[key2])  # Kiírja az 'érték'-et, mivel key1 == key2

Fontos, hogy a tárgyak az attribútumok tekintetében változatlanok legyenek, különben a szótár nem működik helyesen.