Object destruction delayed on interactive prompt
Mario Figueiredo
marfig at gmail.com
Sun Jan 25 13:23:43 EST 2015
Consider the following class:
class A:
def __init__(self, value):
self.value = value
def __del__(self):
print("'A' instance being collected...")
def __repr__(self):
return str(self.value)
If ran as a script, the destructor behavior works as expected:
if __name__ == '__main__':
x1 = A(12)
print(x1) # __repr__()
x1 = 2 # __del__()
print(x1)
But if I run it interactively, a weird behavior comes up:
>>> x1 = A(12)
>>> x1 = 'string'
A instance being collected... # __del__() as expected
>>> x1 = A(12) # Recreate x1
>>> x1 # __repr__()
12
>>> x1 = 'string' # __del__() isn't executed!
>>> x1 # it is delayed until here
A instance being collected...
'string'
This is reproducible in IDLE and at the system command prompt. Is this a
REPL specific behavior?
More information about the Python-list
mailing list