yeah no. you need an acyclic structure to maybe guarantee this, in CPython. other Python implementations are more normal in that you shouldn't rely on finalizers at all.
> It is possible (though not recommended!) for the __del__() method to postpone destruction of the instance by creating a new reference to it. This is called object resurrection.
[0]: https://docs.python.org/3/reference/datamodel.html#object.__...
Reading: cyclic GC, yes, the section I linked explicitly discusses that problem, and how it’s solved.
Yes, yes. Hence the words "almost" and "pretty much". For exactly this reason.