Brandt Bucher <brandtbuc...@gmail.com> added the comment:

> Maybe I am missing something but we could mark them as having GC support 
> unconditionally but still leave them untracking and unconditionally add a 
> tracking call on setattribute.

Hm, I’m not sure that would be enough. Consider the case of a class that 
registers its instances in a collection of some sort:

while True:
    class D:
        __slots__ = ()
        registry = []
        def __init__(self):
            self.registry.append(self)
    for i in range(100):
        D() and None  # Suppress REPL output.
    del D

This is probably more common (and problematic) than my example above.

At the same time, I agree that it’s not *ideal* to track all of these objects 
automatically. Anyone setting __slots__ is probably planning on creating lots 
of “cheap” instances. If they do accidentally create cycles, though, I feel the 
memory hit then would be worse than any collection overhead.

I’m just not sure I see a way to fix this without tracking them all.

----------

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue41984>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to