Why this ref leak?

Peter Otten __peter__ at web.de
Wed Feb 27 08:12:57 EST 2008


Peter Otten wrote:

>> Both Python 2.4 and 2.5 don't clean up properly here. Why is this?
>> Aren't classes supposed to be garbage-collected?
> 
> The reference keeping the classes alive is probably
> object.__subclasses__():
> 
>>>> class A(object): pass
> ...
>>>> sum(1 for c in object.__subclasses__() if c.__name__ == "A")
> 1
>>>> class A(object): pass
> ...
>>>> sum(1 for c in object.__subclasses__() if c.__name__ == "A")
> 2

Oops, wrong guess:

>>> import gc
>>> gc.collect()
6
>>> sum(1 for c in object.__subclasses__() if c.__name__ == "A")
1

Peter



More information about the Python-list mailing list