我正在使用Python作为库的包装,出于期望的原因,该库将某些对象保留在内存中,直到进程被杀死并且系统GC删除它们(或发送命令以明确删除它们)为止。
用户可以使用Python函数检索对这些对象之一的引用,因此我知道用户何时访问它们,但是我不知道用户何时完成< / em>访问它们。
我的问题是:在Python中可以观察何时删除变量(由于重新分配,超出范围,垃圾回收等原因)?我是否可以观察到变量的状态变化(类似于Swift的didSet/willSet
)?
答案 0 :(得分:3)
在即将破坏对象时,Python调用__del__
魔术方法。
您可以覆盖它并添加逻辑。
class ObserveDel:
def __del__(self):
# do your stuff
或者就地替换它。
def _handle_del(obj):
# do your stuff
a.__del__ = _handle_del