您的位置:首页 > 编程语言 > Python开发

python weak referance

2014-01-30 19:08 274 查看
# -*- 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/>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: