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ā.