举例说明python弱引用
时间: 2024-09-04 18:00:54 浏览: 31
在Python中,弱引用(weakref)是一种特殊类型的引用,它不会增加对象的引用计数。当没有强引用指向一个对象时,即使有弱引用存在,垃圾回收器也会回收这个对象。
弱引用通常用于实现缓存机制或观察者模式,避免对象被长时间引用而无法被垃圾回收器回收,从而防止内存泄漏。在`weakref`模块中提供了创建和管理弱引用的工具。
下面是一个使用`weakref`模块创建弱引用的例子:
```python
import weakref
class Object:
def __del__(self):
print('__del__')
def callback(reference):
print('垃圾回收前被调用:', reference)
# 创建一个对象
obj = Object()
# 创建一个弱引用
weak = weakref.ref(obj, callback)
# 显示弱引用的函数是
print(weak)
# 弱引用指向原始对象
print(weak())
# 删除强引用
del obj
# 弱引用仍然存在,但不会增加引用计数
# 当原始对象被垃圾回收时,回调函数会被调用
import gc
gc.collect()
# 弱引用现在指向None
print(weak())
```
输出结果可能会是这样的:
```
<weakref at 0x地址; to 'Object' at 0x地址>
<__main__.Object object at 0x地址>
垃圾回收前被调用: <weakref at 0x地址; dead>
None
```