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-ში ატრიბუტებზე წვდომის მართვისთვის.