构建对象以打开多个(上下文管理的)资源并使用这些资源的最Pythonic方法是什么?
我有一个类打开几个托管资源,这是……
ExitStack
__enter__
__exit__
next(...)
opened
closed
r.opened -> True
open
close
以上思路的简单示例:
class ResourceManager(object): def open(self): self.stack = ExitStack() self.a = self.stack.enter_context(resource_A()) self.b = self.stack.enter_context(resource_B()) def close(self): self.stack.close() def processing(self): print('doing something with resource_A and resource_B...') def __enter__(self): self.open() return self def __exit__(self, ex_type, ex_val, traceback): self.close()