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