为什么weakref不支持Python中的内置类型?
在Python的weakref文档中(http://docs.python.org/library/weakref.html),提到:
一些内置类型,比如列表(list)和字典(dict),并不直接支持弱引用,但可以通过子类化来添加支持。
我觉得为大型字典创建弱引用在某些实际情况下可能会很有用。我想知道这样实现的原因是什么?
2 个回答
-1
我猜测,字典和列表在内部是用来实现弱引用的,所以这里就有点像“鸡和蛋”的关系。
7
大多数内置类型是不能直接使用弱引用的,比如字符串(str)、整数(int)、浮点数(float)、列表(list)、字典(dict)和None。而有一些类型,即使你尝试通过子类化(也就是创建一个新的类型来继承它)也无法做到,比如在CPython中的元组(tuples)。
关于几个内置类型的弱引用底层实现的一些细节,可以在这篇2005年3月的python-list帖子中找到,作者是Raymond Hettinger。