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