Sobes.tech
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____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.