Что я понял: фактическое освобождение объекта должно храниться в Dealloc (и, следовательно, Dealloc является обязательным методом), финализатор будет вызываться только один раз, и есть предложение переместить «Любой вызов нетривиального объекта или API» для финализации. Но что здесь нетривиального?
- тривиален ли вызов функций C (которые не вызывают обратный вызов в Python)?
- является ли вызов какой-либо функции CPython нетривиальным?
- и безопасно ли изменять состояние объекта в финализаторе на недопустимое состояние (нарушая любые свойства, которые объект должен поддерживать во время нормальная жизнь), то есть гарантированно ли после финализатора будет следовать Dealloc?
Подробнее здесь: https://stackoverflow.com/questions/760 ... p-finalize