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/>
import weakref
class ExpensiveObject(object):
def __del__(self):
print'(Deleting%s)' % self
def callback(reference): #回调函数
'callback(', reference,
')'
obj = ExpensiveObject()
r = weakref.ref(obj, callback) #当弱引用被删除会调用回调函数
#ref=weakref.proxy(obj)
print 'obj:',obj
'ref:',r
'r():', r()
print 'deleting obj'
del obj
'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/>
相关文章推荐
- Python3之WeakRef弱引用学习
- Weak1 浏览Python主页 and 目标
- Python笔记:weakref模块
- python weakref模块
- Python开发【模块】:Weakref
- [Python标准库]weakref——对象的非永久引用
- Weak variable scope control in Python
- Apache + MySQL + Python + Mod_python
- Ruby vs Python
- Python日志监控(发音版)
- python+eclipse 开发环境配置
- Python线程指南
- 编译python生成.pyc文件
- python dns协议重写
- python的dict,set,list,tuple简单分析
- python 匿名函数lambda
- Python - 格式化(format())输出字符串 详解 及 代码
- Linux下安装Python
- 006_004 Python 链式遍历字典
- python快速教程