Меня довольно смущает ваш вопрос, но я думаю, что вы пытаетесь сделать, это запустить функцию, когда значение переназначено.
Вместо того, чтобы делать сложные вещи с помощью функции метода __del__()
, я предлагаю вам просто поместить свое значение в экземпляр класса, а затем перегрузить __setattr__()
. Вы также можете перегрузить __delattr__()
, чтобы убедиться, что вы поймали del(object.x)
для вашего значения x
.
Сама цель __setattr__()
состоит в том, чтобы дать вам возможность ловить ловушку, когда что-то присваивается члену вашего класса. И вам не понадобится какой-либо странный флаг end_of_program. В конце вашей программы просто избавьтесь от перегруженной функции для __delattr__()
, чтобы не вызывать ее для очистки в конце программы.