python中,名字和对象的关联是强引用的关系,会增加引用计数,进而影响目标对象的生命周期。所以 弱引用就是在保留引用的前提下,不增加计数,不阻止目标被回收。
但不是所有的类型都支持弱引用(如 int、str、list、tuple。。。等)
这里要提到析构函数 __del__
当对象被回收时,会调用析构函数。
这里需注意,弱引用需要加上括号,w( ) is a 而不是 w is a。
并且这里添加了弱引用并未增加引用计数。
del掉对象后,弱引用就失效了。此时 w( ) is None
标准库中有一些弱引用相关函数,以及弱引用字典,集合等容器。
待续。。。。。