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- ում հատկությունների մուտքը կառավարելու համար։