Junior — Middle
Python kontekstida 'descriptor' atamasi nima ekanligini va u qanday ishlashini tushuntirib bera olasizmi?
sobes.tech AI
AIdan javob
Python'da descriptor, başqa bir obyektin atributlarına girişini idarə edən obyektdir. O, bir və ya bir neçə xüsusi metodları həyata keçirir: __get__, __set__ və __delete__. Descriptor ilə təyin olunmuş atribut tələb olunduqda, təyin olunduqda və ya silindiyində, müvafiq descriptor metodları çağırılır.
Bu, atributların davranışını idarə etməyə imkan verir, məsələn, hesablanan xüsusiyyətləri, dəyər doğrulamasını və ya səhlə başlatmanı həyata keçirmək üçün.
Sadə bir descriptor nümunəsi, dəyər tipini yoxlamaq üçün:
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"Gözlənilən tip {self.expected_type.__name__}")
instance.__dict__[self.name] = value
class Person:
age = Typed('age', int)
p = Person()
p.age = 30 # işləyir
# p.age = 'otuz' # TypeError verəcək
Beləliklə, descriptor-lər Python-da atributlara girişin idarə olunması üçün güclü vasitələrdir.