我有兴趣在类(与实例相对)被垃圾收集或者内存不足时向我的代码添加一些钩子。以下是一些示例代码:
def make_objects():
class A(type):
def __del__(cls):
print 'class deleted'
class B(object):
__metaclass__ = A
def __del__(self):
print 'instance deleted'
b = B()
print 'making objects'
make_objects()
print 'finished'
我希望看到:
但我所看到的只是:
如果我修改代码以显式调用del B
,则没有区别:
def make_objects():
class A(type):
def __del__(cls):
print 'class deleted'
class B(object):
__metaclass__ = A
def __del__(self):
print 'instance deleted'
del B
输出:
我的问题是:是否可以挂钩被删除的对象?是否存在阻止类B
被删除的内容,我可能不知道?