python弱引用示例,类保持对它所有实例的弱引用,python示例,和许多其它的高级语言一样
python弱引用示例,类保持对它所有实例的弱引用,python示例,和许多其它的高级语言一样
和许多其它的高级语言一样,Python使用了垃圾回收器来自动销毁那些不再使用的对象。每个对象都有一个引用计数,当这个引用计数为0时Python能够安全地销毁这个对象。
使用weakref模块,你可以创建到对象的弱引用,Python在对象的引用计数为0或只存在对象的弱引用时将回收这个对象。
如下代码实现了一个类,该类使用WeakValueDictionary 保持对自己所有实例的弱引用。
import weakrefclass InstanceTracker(object): def __new__(typ, *args, **kw): #check the class has an __instances__ dict, if not, #create it and initialize __instance_id. try: typ.__instances__ except AttributeError: typ.__instance_id = 0 typ.__instances__ = weakref.WeakValueDictionary() obj = object.__new__(typ, *args, **kw) obj.id = typ.__instance_id typ.__instances__[typ.__instance_id] = obj typ.__instance_id += 1 return objif __name__ == "__main__": class AClass(InstanceTracker): pass class BClass(InstanceTracker): pass instances = [(AClass(),BClass()) for i in xrange(5)] for id, instance in AClass.__instances__.items(): print id, instance, instance.id for id, instance in BClass.__instances__.items(): print id, instance, instance.id
相关内容
- python弱引用使用介绍,python引用,和许多其它的高级语言
- 用c扩展python代码示例,扩展python示例,搞了一晚上终于
- python守护进程例子,python守护进程,来自《python co
- python多线程死锁检测代码,python多线程代码,在多线程程
- python调用grep返回结果,python调用grep返回,下面的函数封
- python记录线程的存活时间,python线程存活,对于长期运行
- python实现逆波兰计算表达式,python波兰表达式,逆波兰表
- python实现封闭类(禁止继承),python封闭,python没有se
- python里的列表list使用范例代码,python范例,#list#新建列
- python winreg 示例,pythonwinreg,下面是关于_winreg
评论关闭