Junior — Middle
Můžete vysvětlit účel metody __delete__() v descriptoru Python a jak funguje?
sobes.tech AI
Odpověď od AI
Metoda __delete__() v descriptoru Python je zodpovědná za odstranění atributu z objektu, na který je descriptor aplikován.
Descriptor je objekt, který implementuje metody __get__(), __set__() a/nebo __delete__(), a řídí přístup k atributům jiného objektu.
Když je voláno del instance.attr, a attr je descriptor s metodou __delete__(), tato metoda je volána s argumentem instance, což je objekt, ze kterého je atribut odstraněn.
Příklad:
class Descriptor:
def __delete__(self, instance):
print(f"Odstraňování atributu z {instance}")
# Zde lze implementovat logiku odstranění, například z slovníku
if hasattr(instance, '_value'):
del instance._value
class MyClass:
attr = Descriptor()
obj = MyClass()
del obj.attr # zavolá Descriptor.__delete__(obj)
Tímto způsobem umožňuje __delete__() kontrolovat chování při odstraňování atributu, například vyčištěním souvisejících dat nebo provedením dalších akcí.