11

In Python weakref document( http://docs.python.org/library/weakref.html ), it says that

Several built-in types such as list and dict do not directly support weak references but can add support through subclassing

I think creating weakref for big dict could be useful in some real cases. I'm wondering what's the reason behind that implementation ?

2 Answers 2

7

Most of the built-in types are not directly weak referenceable (e.g. str, int, float, list, dict, None), and there are a few that cannot even be made so by sub-classing (e.g. tuples in CPython).

Some details about the underlying implementation of weakrefs for several built-in types can be found in this March-2005 python-list post by Raymond Hettinger.

Sign up to request clarification or add additional context in comments.

2 Comments

Thanks. Now I could see the reason why tuple and str couldn't be weak referenced. How about list and dict ? Why we have to subclass those types to create weak reference for them ?
If the hints given in the second paragraph aren't enough to go on, then I'm afraid I don't know enough about python's internals to explain further. Maybe you would be better off asking this kind of question on the python-dev list. I'm sure one of the python devs will be able to give you a definitive answer to your question.
-1

My educated guess is that dicts and lists are used internally to implement weakrefs, so you would have an egg-chicken situation here.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.