我有一个python对象,它在系统上封装了一个敏感而重要的资源。我有一个 cleanup() 安全释放对象使用的各种锁的函数。
cleanup()
清理() 对象变得不可用。理想情况下,对对象的任何成员函数的任何调用都会引发异常。有没有一种方法不需要检查每个函数中的标志?
清理()
一种方法是简单地将所有实例变量设置为 None
None
class Unusable: def __init__(self): self.alive = True def notcleanedup(func): def operation(self, *args, **kwargs): if self.alive: func(self, *args, **kwargs) else: raise Exception("Use after cleanup") return operation @notcleanedup def sensitive(self, a, b): print a, b def cleanup(self): self.alive = False