Sobes.tech
Junior — Middle

Vai jūs varat izskaidrot, ko nozīmē termins 'deskriptor' Python kontekstā un kā tas darbojas?

sobes.tech AI

Atbilde no AI

Pythonā descriptor ir objekts, kas kontrolē piekļuvi cita objekta atribūtiem. Tas īsteno vienu vai vairākus īpašus metodes: __get__, __set__ un __delete__. Kad tiek pieprasīts, iestatīts vai dzēsts atribūts ar descriptor, tiek izsaukti attiecīgie descriptor metodes.

Tas ļauj kontrolēt atribūtu uzvedību, piemēram, īstenot aprēķināmas īpašības, vērtību validāciju vai slinko inicializāciju.

Vienkāršs descriptor piemērs, kas pārbauda vērtības tipu:

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"Gaidītais tips {self.expected_type.__name__}")
        instance.__dict__[self.name] = value

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

p = Person()
p.age = 30  # darbojas
# p.age = 'trīsdesmit'  # izraisīs TypeError

Tādējādi, descriptor ir spēcīgs rīks, lai pārvaldītu piekļuvi atribūtiem Pythonā.