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