如何知道对象是否在 Python 中被删除 [英] How to know if object gets deleted in Python
本文介绍了如何知道对象是否在 Python 中被删除的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在堆中有一个对象和对它的引用.在某些情况下,对象会被删除,但指向其位置的引用并不知道这一点.如何检查堆中是否有真实数据?
I have an object in the heap and a reference to it. There are certain circumstances in which the object gets deleted but the reference that points to its location doesn't know that. How can I check if there is real data in the heap?
例如:
from PySide import *
a = QProgressBar()
b = QProgressBar()
self.setIndexWidget(index,a)
self.setIndexWidget(index,b)
然后 a
对象被删除但 print(a)
返回一个有效地址.但是,如果您尝试 a.value()
- 会发生运行时错误(C++ 对象已删除).
Then the a
object gets deleted but print(a)
returns a valid address. However if you try a.value()
- runtime error occurs (C++ object already deleted).
a is None
返回 False
.
推荐答案
使用 sip
模块,阅读更多关于 sip
这里
use sip
module, read more about sip
here
import sip
a = QProgressBar()
sip.isdeleted(a)
False
sip.delete(a)
a
<PyQt4.QtCore.QObject object at 0x017CCA98>
sip.isdeleted(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
RuntimeError: underlying C/C++ object has been deleted
这篇关于如何知道对象是否在 Python 中被删除的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文