weakref

作者: xncode | 来源:发表于2018-12-10 19:54 被阅读0次

在对某个对象的引用只有弱引用时,GC会回收该对象。

可被弱引用的:实例,函数,方法,set,fronzenset,file,generator,
type object,socket,array,deque,re,code。

list dict可以通过派生后支持弱引用

其他的类型例如 tuple long 不支持,即使被派生

weakref.ref(object[, callback])

返回一个原始对象的弱引用 weakref.ReferenceType
callback会在原始对象被删除时调用

o = Object()  # 原始对象
r = weakref.ref(o)  # 返回一个弱引用对象,在被调用时返回原始对象
o2 = r()  # 此时o o2指向同一个对象

del o, o2
r()  # 返回None

o = r()
if o is None:
    print "Object has been deallocated; can't frobnicate."
else:
    print "Object is still live!"

weakref.proxy(object[, callback])

返回一个原始对象的代理 weakref.ProxyType或weakref.CallableProxyType或weakref.ProxyTypes

使用时可把该代理当作原始对象一样使用

weakref.getweakrefcount(object)

返回一个对象的弱引用数量

weakref.getweakrefs(object)

返回一个对象的所有弱引用

class weakref.WeakKeyDictionary([dict])

iterkeyrefs()

keyrefs()

class weakref.WeakValueDictionary([dict])

itervaluerefs()

valuerefs()

class weakref.WeakSet([elements])

弱引用集合

相关文章

网友评论

      本文标题:weakref

      本文链接:https://www.haomeiwen.com/subject/kgidhqtx.html