Junior — Middle
Môžete vysvetliť, čo znamená pojem 'descriptor' v kontexte Pythonu a ako funguje?
sobes.tech AI
Odpoveď od AI
V Pythone je descriptor objekt, ktorý riadi prístup k atribútom iného objektu. Implementuje jeden alebo viac špeciálnych metód: __get__, __set__ a __delete__. Keď sa požaduje, nastaví alebo odstráni atribút s descriptorom, volajú sa príslušné metódy descriptoru.
Toto umožňuje kontrolovať správanie atribútov, napríklad implementovať vypočítavané vlastnosti, validáciu hodnôt alebo lenivú inicializáciu.
Príklad jednoduchého descriptoru na kontrolu typu hodnoty:
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"Očakávaný typ {self.expected_type.__name__}")
instance.__dict__[self.name] = value
class Person:
age = Typed('age', int)
p = Person()
p.age = 30 # funguje
# p.age = 'tridsať' # spôsobí TypeError
Takto sú descriptor-y mocný nástroj na riadenie prístupu k atribútom v Pythone.