RFC: Proposal: Deterministic Object Destruction

Serhiy Storchaka storchaka at gmail.com
Fri Mar 2 01:35:48 EST 2018


02.03.18 02:49, Rick Johnson пише:
> This is true, but it does not answer the challenge directly
> because function CRs are a consequence of Python _internals_
> *NOT* consequences of a custom class written by a programmer
> which references itself _explicitly_.

This doesn't matter. You question was "Can you provide a real world 
example in which you need an object which circularly references 
_itself_?" Global functions are such objects and unlikely you can write 
any reasonable program without using global functions. And if you have 
reference cycles in such fundamental objects you can't avoid detecting 
and breaking reference cycles in GC.

If you want to see an example that creates a reference cycle in Python 
code, here is yet one real-word example:

     class C:
         def __init__(self, ...):
             ...
             self.foo = self.bar if cond else self.baz
             ...

         def bar(self, ...):
             ...

         def baz(self, ...):
             ...


Depending on condition you need to call either method bar or method baz. 
You save a reference to method as instance attribute, but a method has a 
reference to the instance. This creates a cycle.




More information about the Python-list mailing list