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