Junior — Middle
Ποια βήματα πρέπει να ακολουθηθούν ώστε ένα στιγμιότυπο της δικής σας κλάσης να μπορεί να χρησιμοποιηθεί ως κλειδί σε ένα λεξικό Python;
sobes.tech AI
Απάντηση από AI
Για να μπορεί ένα στιγμιότυπο της δικής σας κλάσης να χρησιμοποιηθεί ως κλειδί σε ένα λεξικό Python, πρέπει να είναι hashable και συγκρίσιμο. Για αυτό, πρέπει να υλοποιήσετε τις μεθόδους __hash__() και __eq__() στην κλάση. Η μέθοδος __hash__ πρέπει να επιστρέφει μια μοναδική ακέραια τιμή για το αντικείμενο, λαμβάνοντας υπόψη τα σημαντικά του χαρακτηριστικά, και η __eq__ πρέπει να ορίζει την ισότητα των αντικειμένων.
Παράδειγμα:
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
# Χρήση
my_dict = {}
key1 = MyKey(1)
key2 = MyKey(1)
my_dict[key1] = 'τιμή'
print(my_dict[key2]) # Θα εμφανίσει 'τιμή', καθώς key1 == key2
Είναι σημαντικό τα αντικείμενα να είναι αμετάβλητα όσον αφορά τα χαρακτηριστικά που χρησιμοποιούνται στον υπολογισμό του hash, διαφορετικά το λεξικό μπορεί να λειτουργεί λανθασμένα.