Python弱引用
要在python中创建弱引用,我们需要使用weakref模块。弱引用不足以使对象保持活动状态。弱引用的基本用法是为大对象实现高速缓存或映射。
要使用此模块,我们应该使用-导入它
import weakref
并非所有对象都可以弱引用。一些内置类型(如元组或整数)不支持弱引用。有一些与弱引用相关的类和方法。
类weakref.ref(object [,callback])
它将返回对该对象的弱引用。当引用对象仍然存在时,可以通过调用引用对象来检索实际对象,但是当不存在实际对象时,它将返回None。
方法weakref.proxy(object [,回调])
此方法用于返回使用弱引用的对象的代理。返回的对象可以是ProxyType或CallableProxyType。
方法weakref.getweakrefcount(对象)
此方法用于返回对象的弱引用和代理的数量。
方法weakref.getweakrefs(对象)
此方法用于返回弱引用和代理对象的列表。
范例程式码
import weakrefclass my_list(list):
pass
new_list = my_list('String') #Use my_list class to define a list
print(new_list)
weak_ref = weakref.ref(new_list)
new_weak_list = weak_ref()
new_proxy = weakref.proxy(new_list)
print(new_weak_list)
print('The object using proxy: ' + str(new_proxy))
if new_list is new_weak_list:
print("There is a weak reference")
print('The Number of Weak references: ' + str(weakref.getweakrefcount(new_list)))
del new_list, new_weak_list #Delete both objects
print("The weak reference is: " + str(weak_ref()))
输出结果
['S', 't', 'r', 'i', 'n', 'g']['S', 't', 'r', 'i', 'n', 'g']
The object using proxy: ['S', 't', 'r', 'i', 'n', 'g']
There is a weak reference
The Number of Weak references: 2
The weak reference is: None
以上是 Python弱引用 的全部内容, 来源链接: utcz.com/z/330975.html