Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ, რას ნიშნავს 'deskriptor' ტერმინი Python-ის კონტექსტში და როგორ მუშაობს ის?

sobes.tech AI

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

Python-ში დესკრიპტორი არის ობიექტი, რომელიც მართავს სხვა ობიექტის ატრიბუტებზე წვდომას. იგი ახორციელებს ერთ ან რამდენიმე სპეციალურ მეთოდს: __get__, __set__ და __delete__. როდესაც მოთხოვნილია დესკრიპტორით განსაზღვრული ატრიბუტი, ის ინიშნება ან წაიშლება, გამოძახებენ შესაბამისი მეთოდები.

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

სადემონსტრაციო მაგალითი — მარტივი დესკრიპტორი, რომელიც ამოწმებს მნიშვნელობის ტიპს:

class Typed:
    def __init__(self, name, expected_type):
        self.name = name
        self.expected_type = expected_type

    def __get__(self, instance, owner):
        return instance.__dict__[self.name]

    def __set__(self, instance, value):
        if not isinstance(value, self.expected_type):
            raise TypeError(f"მოლოდინია ტიპი {self.expected_type.__name__}")
        instance.__dict__[self.name] = value

class Person:
    age = Typed('age', int)

p = Person()
p.age = 30  # მუშაობს
# p.age = 'მესამე'  # გამოიწვევს TypeError-ს

ამ გზით, დესკრიპტორები — ძლიერი ინსტრუმენტია Python-ში ატრიბუტებზე წვდომის მართვისთვის.