python weak referance

本文通过一个具体的Python示例介绍了如何使用弱引用以及如何定义和使用回调函数来跟踪对象的删除事件。通过weakref模块创建弱引用,并设置当对象被删除时触发的回调函数。

# -*- coding:UTF-8 -*-

 

import weakref

class ExpensiveObject(object):
   
def __del__(self):
       
print'(Deleting%s)' % self

def callback(reference): #回调函数
   
print 'callback(', reference, ')'

obj = ExpensiveObject()
r = weakref.ref(obj, callback)
#当弱引用被删除会调用回调函数


#ref=weakref.proxy(obj)

print 'obj:',obj
print 'ref:',r
print 'r():', r()

print 'deleting obj'
del obj
print 'r():', r()

 ------------------------------------------------------

obj: <__main__.ExpensiveObject object at 0x02499070>
ref: <weakref at 0248BF30; to 'ExpensiveObject' at 02499070>
r(): <__main__.ExpensiveObject object at 0x02499070>
deleting obj
callback( <weakref at 0248BF30; dead> )
(Deleting <__main__.ExpensiveObject object at 0x02499070>)
r(): None

来自 <http://www.dongwm.com/archives/guanyuweakrefyanjiu/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值