On Wed, Mar 12, 2014 at 12:34 PM, Jurko Gospodnetić <jurko.gospodne...@pke.hr> wrote: > Hi all. > > I was wondering if someone could explain gc.get_objects() in a bit more > detail to me. > > Does it return a list of 'all objects known to Python'? Only some of them? > Which does it return? Which it does not? > > For example (done using CPython 3.4 interactive interpreter) here it does > not contain an object I know exists: > >> >>> a = object() >> >>> a in gc.get_objects() >> False > > > but here it does: > >> >>> class Foo: pass >> ... >> >>> a = Foo() >> >>> a in gc.get_objects() >> True
I don't know why some objects aren't showing up in get_objects, but here's a quick note to say it's not just 3.4: $ ./pythons 'import gc; var="data"; print(var in gc.get_objects())' /usr/local/cpython-2.4/bin/python [6600 refs] False /usr/local/cpython-2.5/bin/python False [7536 refs] /usr/local/cpython-2.6/bin/python False [15233 refs] /usr/local/cpython-2.7/bin/python False [18526 refs] /usr/local/cpython-3.0/bin/python Traceback (most recent call last): File "<string>", line 1, in <module> File "/usr/local/cpython-3.0/lib/python3.0/_weakrefset.py", line 121, in __eq__ return self.data == set(ref(item) for item in other) File "/usr/local/cpython-3.0/lib/python3.0/_weakrefset.py", line 121, in <genexpr> return self.data == set(ref(item) for item in other) TypeError: cannot create weak reference to 'str' object [34510 refs] /usr/local/cpython-3.1/bin/python False [37270 refs] /usr/local/cpython-3.2/bin/python False [37700 refs] /usr/local/cpython-3.3/bin/python False [42662 refs] /usr/local/cpython-3.4/bin/python False /usr/local/pypy-2.2/bin/pypy True /usr/local/jython-2.7b1/bin/jython Traceback (most recent call last): File "<string>", line 1, in <module> NotImplementedError: not applicable to Java GC Interesting that it is present in Pypy. -- https://mail.python.org/mailman/listinfo/python-list