Python weakref 模块
实例
创建对对象的弱引用:
import weakref
class Person:
def __init__(self, name):
self.name = name
person = Person('Emil')
weak_person = weakref.ref(person)
print(f'Name: {weak_person().name}')
del person
print(f'After deletion: {weak_person()}')
亲自试一试 »
定义和用法
weakref 模块创建对对象的弱引用,但不会阻止对象被垃圾回收。
使用它来避免数据结构(例如缓存、观察者或回调)中的循环引用,或者在不保持对象存活的情况下维护引用。
注意:并非所有对象都可以使用弱引用。典型的可以使用弱引用的对象包括类实例、函数和方法。
成员
| 成员 | 描述 |
|---|---|
| CallableProxyType | 用于可调用对象的弱引用代理的类型。 |
| ProxyType | 用于不可调用对象的弱引用代理的类型。 |
| ReferenceType | 用于标准弱引用的类型(与 'ref' 相同)。 |
| WeakKeyDictionary | 保存对其键的弱引用的字典。 |
| WeakMethod | 方法对象的特殊弱引用。 |
| WeakSet | 存储指向其元素的弱引用的集合。 |
| WeakValueDictionary | 存储指向其值的弱引用的字典。 |
| finalize | 注册一个在对象即将被销毁时运行的函数。 |
| getweakrefcount() | 统计指向某个对象的弱引用数量。 |
| getweakrefs() | 获取指向某个对象的所有弱引用的列表。 |
| proxy() | 创建一个代理,该代理的行为类似于对象,但不会保持对象的存活状态。 |
| ref() | 创建一个弱引用,该弱引用不会阻止垃圾回收。 |

