类的Python __del__方法?

时间:2014-11-19 13:59:00

标签: python garbage-collection magic-methods

我有兴趣在类(与实例相对)被垃圾收集或者内存不足时向我的代码添加一些钩子。以下是一些示例代码:

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被删除的内容,我可能不知道?

0 个答案:

没有答案