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.