Есть ли какие-либо препятствия, препятствующие weakref
делать все, что __del__
делает, но с гораздо более сильными гарантиями (например, finalize
гарантирует, что вызов будет выполнен до выхода переводчика, а порядок вызовов будет определен и т.д.)?
Кажется, что в далеком прошлом считалось, что weakref
в конечном итоге приведет к удалению __del__
с языка.
Что помешало этому?
Кажется, что несколько случаев использования для __del__
, и все те, о которых я знаю, похоже, работают как минимум (и обычно намного лучше ) с weakref
обратными вызовами или weakref.finalize
.
Update:
С PEP 442 резко улучшается поведение __del__
, а проблемы с weakref
, упомянутые @gz и @user2357112, Мне интересно, будет ли язык вообще двигаться к тому, чтобы сделать __del__
более надежным или использовать weakref
вместо __del__
или и то, и другое.