Python弱引用

要在python中创建弱引用,我们需要使用weakref模块。弱引用不足以使对象保持活动状态。弱引用的基本用法是为大对象实现高速缓存或映射。

要使用此模块,我们应该使用-导入它

import weakref

并非所有对象都可以弱引用。一些内置类型(如元组或整数)不支持弱引用。有一些与弱引用相关的类和方法。

类weakref.ref(object [,callback])

它将返回对该对象的弱引用。当引用对象仍然存在时,可以通过调用引用对象来检索实际对象,但是当不存在实际对象时,它将返回None。

方法weakref.proxy(object [,回调])

此方法用于返回使用弱引用的对象的代理。返回的对象可以是ProxyType或CallableProxyType。

方法weakref.getweakrefcount(对象)

此方法用于返回对象的弱引用和代理的数量。

方法weakref.getweakrefs(对象)

此方法用于返回弱引用和代理对象的列表。

范例程式码

import weakref

class 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

回到顶部