RFC: Proposal: Deterministic Object Destruction

Chris Angelico rosuav at gmail.com
Wed Feb 28 22:00:18 EST 2018


On Thu, Mar 1, 2018 at 1:46 PM, Rick Johnson
<rantingrickjohnson at gmail.com> wrote:
> On Wednesday, February 28, 2018 at 5:02:17 PM UTC-6, Chris Angelico wrote:
>
>> Here's one example: reference cycles. When do they get detected?
>> Taking a really simple situation:
>>
>> class Foo:
>>     def __init__(self):
>>         self.self = self
>
> *shudders*
>
> Can you provide a real world example in which you need an
> object which circularly references _itself_? This looks like
> a highly contrived example used to (1) merely win the
> argument, and (2) Bump fib() up one position from it's
> current position as "the worst introductory example of how
> to write a function in the history of programming tutorials"

Not off hand, but I can provide an EXTREMELY real-world example of a
fairly tight loop: exceptions. An exception has a reference to the
local variables it came from, and those locals may well include the
exception itself:

try:
    1/0
except Exception as e:
    print(e)

The ZeroDivisionError has a reference to the locals, and 'e' in the
locals refers to that very exception object.

ChrisA



More information about the Python-list mailing list