Sobes.tech
Junior — Middle

რა ნაბიჯები უნდა გადაიდგას, რათა საკუთარი კლასი გამოიყენოს Python-ის ლექსიკონში როგორც გასაღები?

sobes.tech AI

პასუხი AI-სგან

იმისთვის, რომ თქვენი საკუთარი კლასი შეიძლება გამოყენებულ იქნას Python-ის ლექსიკონის გასაღებად, ის უნდა იყოს ჰეშირებადი და შედარებადი. ამისთვის საჭიროა იმუშაოთ მეთოდები __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

მნიშვნელოვანია, რომ ობიექტები იყოს უცვლელი იმ ატრიბუტების მიმართ, რომლებიც გამოიყენება ჰეშირებისთვის, წინააღმდეგ შემთხვევაში, ლექსიკონი შეიძლება იმუშაოს არასწორად.