观察何时删除变量

时间:2019-03-25 23:56:46

标签: python python-3.x

我正在使用Python作为库的包装,出于期望的原因,该库将某些对象保留在内存中,直到进程被杀死并且系统GC删除它们(或发送命令以明确删除它们)为止。

用户可以使用Python函数检索对这些对象之一的引用,因此我知道用户何时访问它们,但是我不知道用户何时完成< / em>访问它们。

我的问题是:在Python中可以观察何时删除变量(由于重新分配,超出范围,垃圾回收等原因)?我是否可以观察到变量的状态变化(类似于Swift的didSet/willSet)?

1 个答案:

答案 0 :(得分:3)

在即将破坏对象时,Python调用__del__魔术方法。

您可以覆盖它并添加逻辑。

class ObserveDel:
    def __del__(self):
        # do your stuff

或者就地替换它。

def _handle_del(obj):
    # do your stuff
a.__del__ = _handle_del