Удаление свойства через __delattr__ в ООП в Python
Метод __delattr__ вызывается при попытке
удалить атрибут оператором del.
Если его не реализовать, удаление идет
обычным способом - там, где атрибут
недоступен, возникнет ошибка.
Давайте разрешим удалять только заранее
известные имена. Пусть дан класс Test:
class Test:
def __init__(self):
self.prop1 = 1
self.prop2 = 2
def __delattr__(self, name):
properties = ['prop1', 'prop2']
if name in properties:
super().__delattr__(name)
Проверим:
test = Test()
del test.prop1
print(test.prop2) # выведет 2
Чтобы прочитать атрибут по строковому имени
внутри класса, иногда используют функцию
getattr - она вернет значение так
же, как обращение через точку.