Sobes.tech
Junior — Middle

Meg tudná magyarázni, hogy a 'descriptor' kifejezés mit jelent a Python kontextusában, és hogyan működik?

sobes.tech MI

Válasz az MI-től

Pythonban a descriptor egy olyan objektum, amely más objektum attribútumaihoz való hozzáférést irányít. Egy vagy több speciális módszert valósít meg: __get__, __set__ és __delete__. Amikor egy descriptor-rel ellátott attribútumot kérnek le, állítanak be vagy törölnek, a megfelelő descriptor módszerek hívódnak.

Ez lehetővé teszi az attribútumok viselkedésének kontrollálását, például számított tulajdonságok, érték-ellenőrzés vagy késleltetett inicializálás megvalósítását.

Egyszerű descriptor példája az érték típusának ellenőrzésére:

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"Várt típus {self.expected_type.__name__}")
        instance.__dict__[self.name] = value

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

p = Person()
p.age = 30  # működik
# p.age = 'harminc'  # TypeError-t fog eredményezni

Így a deskriptorok erőteljes eszközök az attribútumok hozzáférésének kezelésére Pythonban.